@@ -1,2 +1,2 @@ | |||||
./dwm | |||||
./*.o | |||||
dwm | |||||
*.o |
@@ -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 int showtab = showtab_auto; /* Default tab bar show mode */ | ||||
static const Bool toptab = False; /* False means bottom tab bar */ | 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_gray2[] = "#666666"; | ||||
static const char col_gray3[] = "#bbbbbb"; | static const char col_gray3[] = "#bbbbbb"; | ||||
static const char col_gray4[] = "#eeeeee"; | static const char col_gray4[] = "#eeeeee"; | ||||
static const char col_cyan[] = "#7733ee"; | static const char col_cyan[] = "#7733ee"; | ||||
static const char col_borderbar[] = "#222222"; | |||||
static const char col_borderbar[] = "#1e1e2e"; | |||||
static const char *colors[][3] = { | static const char *colors[][3] = { | ||||
/* fg bg border */ | /* fg bg border */ | ||||
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, | [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 */ | /* class instance title tags mask iscentered isfloating isterminal noswallow monitor */ | ||||
{ "Gimp", NULL, NULL, 1 << 7, 0, 1, 0, 0, -1 }, | { "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 }, | { "LibreWolf", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 }, | ||||
{ "firefox", 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 }, | { "Brave-browser", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 }, | ||||
{ "St", NULL, NULL, 0, 0, 0, 1, 0, -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 }, | { "cmus", NULL, NULL, 1 << 3, 0, 0, 0, -1, -1 }, | ||||
{ "TelegramDesktop", NULL, NULL, 1 << 4, 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 }, | { "Discord", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 }, | ||||
@@ -122,31 +124,32 @@ static Key keys[] = { | |||||
/* modifier key function argument */ | /* modifier key function argument */ | ||||
{ 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") }, | { 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") }, | ||||
{ 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.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_AudioRaiseVolume, spawn, SHCMD("amixer set Master 1%+") }, | ||||
{ 0, XF86XK_AudioLowerVolume, 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_MonBrightnessUp, spawn, SHCMD("brightnessctl s +5%")}, | ||||
{ 0, XF86XK_MonBrightnessDown, 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|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, XK_c, spawn, SHCMD("~/scripts/showcal.sh") }, | ||||
{ MODKEY|ShiftMask, XK_l, spawn, SHCMD("slock.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_e, spawn, SHCMD("emacsclient --create-frame") }, | ||||
{ MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") }, | { MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") }, | ||||
{ MODKEY|ShiftMask, XK_j, spawn, SHCMD("screenkey.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_s, spawn, SHCMD("~/scripts/screenshot.sh 1") }, | ||||
{ MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") }, | { MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") }, | ||||
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") }, | { MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") }, | ||||
{ MODKEY|ShiftMask, XK_t, spawn, SHCMD("telegram-desktop") }, | { 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, XK_p, spawn, {.v = dmenucmd } }, | ||||
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, | { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, | ||||
{ MODKEY, XK_b, togglebar, {0} }, | { MODKEY, XK_b, togglebar, {0} }, | ||||
@@ -167,6 +170,7 @@ static Key keys[] = { | |||||
{ MODKEY, XK_o, setlayout, {.v = &layouts[4]} }, | { MODKEY, XK_o, setlayout, {.v = &layouts[4]} }, | ||||
{ MODKEY, XK_space, setlayout, {0} }, | { MODKEY, XK_space, setlayout, {0} }, | ||||
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} }, | { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, | ||||
{ MODKEY|ShiftMask, XK_f, togglefullscr, {0} }, | |||||
{ MODKEY, XK_0, view, {.ui = ~0 } }, | { MODKEY, XK_0, view, {.ui = ~0 } }, | ||||
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, | { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, | ||||
{ MODKEY, XK_comma, focusmon, {.i = -1 } }, | { MODKEY, XK_comma, focusmon, {.i = -1 } }, | ||||
@@ -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 swallowfloating = 0; /* 1 means swallow floating windows by default */ | ||||
static const int showbar = 1; /* 0 means no bar */ | static const int showbar = 1; /* 0 means no bar */ | ||||
static const int topbar = 1; /* 0 means bottom 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 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 horizpadbar = 10; /* horizontal padding for statusbar */ | ||||
static const int vertpadbar = 10; /* vertical 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 int showtab = showtab_auto; /* Default tab bar show mode */ | ||||
static const Bool toptab = False; /* False means bottom tab bar */ | 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_gray1[] = "#222222"; | ||||
static const char col_gray2[] = "#666666"; | static const char col_gray2[] = "#666666"; | ||||
static const char col_gray3[] = "#bbbbbb"; | static const char col_gray3[] = "#bbbbbb"; | ||||
@@ -75,7 +77,8 @@ static const Rule rules[] = { | |||||
{ "firefox", 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 }, | { "Brave-browser", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 }, | ||||
{ "St", NULL, NULL, 0, 0, 0, 1, 0, -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 }, | { "cmus", NULL, NULL, 1 << 3, 0, 0, 0, -1, -1 }, | ||||
{ "TelegramDesktop", NULL, NULL, 1 << 4, 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 }, | { "Discord", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 }, | ||||
@@ -120,31 +123,32 @@ static Key keys[] = { | |||||
/* modifier key function argument */ | /* modifier key function argument */ | ||||
{ 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") }, | { 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") }, | ||||
{ 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.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_AudioRaiseVolume, spawn, SHCMD("amixer set Master 1%+") }, | ||||
{ 0, XF86XK_AudioLowerVolume, 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_MonBrightnessUp, spawn, SHCMD("brightnessctl s +5%")}, | ||||
{ 0, XF86XK_MonBrightnessDown, 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|ShiftMask, XK_space, togglealwaysontop, {0} }, | ||||
{ MODKEY, XK_w, spawn, SHCMD("firefox") }, | { MODKEY, XK_w, spawn, SHCMD("firefox") }, | ||||
{ MODKEY, XK_c, spawn, SHCMD("~/scripts/showcal.sh") }, | { MODKEY, XK_c, spawn, SHCMD("~/scripts/showcal.sh") }, | ||||
{ MODKEY|ShiftMask, XK_l, spawn, SHCMD("slock.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_e, spawn, SHCMD("emacsclient --create-frame") }, | ||||
{ MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") }, | { MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") }, | ||||
{ MODKEY|ShiftMask, XK_j, spawn, SHCMD("screenkey.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_s, spawn, SHCMD("~/scripts/screenshot.sh 1") }, | ||||
{ MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") }, | { MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") }, | ||||
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") }, | { MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") }, | ||||
{ MODKEY|ShiftMask, XK_t, spawn, SHCMD("telegram-desktop") }, | { 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, XK_p, spawn, {.v = dmenucmd } }, | ||||
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, | { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, | ||||
{ MODKEY, XK_b, togglebar, {0} }, | { MODKEY, XK_b, togglebar, {0} }, | ||||
@@ -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 } }, |
@@ -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 int showtab = showtab_auto; /* Default tab bar show mode */ | ||||
static const Bool toptab = False; /* False means bottom tab bar */ | 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_gray2[] = "#666666"; | ||||
static const char col_gray3[] = "#bbbbbb"; | static const char col_gray3[] = "#bbbbbb"; | ||||
static const char col_gray4[] = "#eeeeee"; | static const char col_gray4[] = "#eeeeee"; | ||||
static const char col_cyan[] = "#7733ee"; | static const char col_cyan[] = "#7733ee"; | ||||
static const char col_borderbar[] = "#222222"; | |||||
static const char col_borderbar[] = "#1e1e2e"; | |||||
static const char *colors[][3] = { | static const char *colors[][3] = { | ||||
/* fg bg border */ | /* fg bg border */ | ||||
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, | [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 */ | /* class instance title tags mask iscentered isfloating isterminal noswallow monitor */ | ||||
{ "Gimp", NULL, NULL, 1 << 7, 0, 1, 0, 0, -1 }, | { "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 }, | { "LibreWolf", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 }, | ||||
{ "firefox", 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 }, | { "Brave-browser", NULL, NULL, 1 << 2, 0, 0, 0, -1, -1 }, | ||||
{ "St", NULL, NULL, 0, 0, 0, 1, 0, -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 }, | { "cmus", NULL, NULL, 1 << 3, 0, 0, 0, -1, -1 }, | ||||
{ "TelegramDesktop", NULL, NULL, 1 << 4, 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 }, | { "Discord", NULL, NULL, 1 << 4, 0, 0, 0, -1, -1 }, | ||||
@@ -122,31 +124,32 @@ static Key keys[] = { | |||||
/* modifier key function argument */ | /* modifier key function argument */ | ||||
{ 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") }, | { 0, XK_Print, spawn, SHCMD("~/scripts/screenshot.sh") }, | ||||
{ 0, XF86XK_PowerOff, spawn, SHCMD("~/scripts/poweroff.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_AudioRaiseVolume, spawn, SHCMD("amixer set Master 1%+") }, | ||||
{ 0, XF86XK_AudioLowerVolume, 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_MonBrightnessUp, spawn, SHCMD("brightnessctl s +5%")}, | ||||
{ 0, XF86XK_MonBrightnessDown, 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|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, XK_c, spawn, SHCMD("~/scripts/showcal.sh") }, | ||||
{ MODKEY|ShiftMask, XK_l, spawn, SHCMD("slock.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_e, spawn, SHCMD("emacsclient --create-frame") }, | ||||
{ MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") }, | { MODKEY|ShiftMask, XK_m, spawn, SHCMD("~/scripts/autostart.sh") }, | ||||
{ MODKEY|ShiftMask, XK_j, spawn, SHCMD("screenkey.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_s, spawn, SHCMD("~/scripts/screenshot.sh 1") }, | ||||
{ MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") }, | { MODKEY|ShiftMask, XK_n, spawn, SHCMD("~/scripts/network.sh") }, | ||||
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") }, | { MODKEY|ShiftMask, XK_x, spawn, SHCMD("mixer.sh") }, | ||||
{ MODKEY|ShiftMask, XK_t, spawn, SHCMD("telegram-desktop") }, | { 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, XK_p, spawn, {.v = dmenucmd } }, | ||||
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, | { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, | ||||
{ MODKEY, XK_b, togglebar, {0} }, | { MODKEY, XK_b, togglebar, {0} }, | ||||
@@ -167,6 +170,7 @@ static Key keys[] = { | |||||
{ MODKEY, XK_o, setlayout, {.v = &layouts[4]} }, | { MODKEY, XK_o, setlayout, {.v = &layouts[4]} }, | ||||
{ MODKEY, XK_space, setlayout, {0} }, | { MODKEY, XK_space, setlayout, {0} }, | ||||
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} }, | { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, | ||||
{ MODKEY|ShiftMask, XK_f, togglefullscr, {0} }, | |||||
{ MODKEY, XK_0, view, {.ui = ~0 } }, | { MODKEY, XK_0, view, {.ui = ~0 } }, | ||||
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, | { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, | ||||
{ MODKEY, XK_comma, focusmon, {.i = -1 } }, | { MODKEY, XK_comma, focusmon, {.i = -1 } }, | ||||
@@ -202,6 +202,8 @@ drw_clr_create(Drw *drw, Clr *dest, const char *clrname) | |||||
DefaultColormap(drw->dpy, drw->screen), | DefaultColormap(drw->dpy, drw->screen), | ||||
clrname, dest)) | clrname, dest)) | ||||
die("error, cannot allocate color '%s'", clrname); | 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 | /* Wrapper to create color schemes. The caller has to call free(3) on the | ||||
@@ -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 | |||||
@@ -131,6 +131,9 @@ Zooms/cycles focused window to/from master area (tiled layouts only). | |||||
.B Mod1\-Shift\-c | .B Mod1\-Shift\-c | ||||
Close focused window. | Close focused window. | ||||
.TP | .TP | ||||
.B Mod1\-Shift\-f | |||||
Toggle fullscreen for focused window. | |||||
.TP | |||||
.B Mod1\-Shift\-space | .B Mod1\-Shift\-space | ||||
Toggle focused window between tiled and floating state. | Toggle focused window between tiled and floating state. | ||||
.TP | .TP | ||||
@@ -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. |
@@ -64,7 +64,7 @@ | |||||
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) | #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) | ||||
/* enums */ | /* enums */ | ||||
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ | |||||
enum { CurNormal, CurResize, CurMove, CurHand, CurLast }; /* cursor */ | |||||
enum { SchemeNorm, SchemeSel, SchemeDis}; /* color schemes */ | enum { SchemeNorm, SchemeSel, SchemeDis}; /* color schemes */ | ||||
enum { NetSupported, NetWMName, NetWMState, NetWMCheck, | enum { NetSupported, NetWMName, NetWMState, NetWMCheck, | ||||
NetWMFullscreen, NetActiveWindow, NetWMWindowType, | NetWMFullscreen, NetActiveWindow, NetWMWindowType, | ||||
@@ -239,6 +239,7 @@ static void tagmon(const Arg *arg); | |||||
static void tile(Monitor *); | static void tile(Monitor *); | ||||
static void togglebar(const Arg *arg); | static void togglebar(const Arg *arg); | ||||
static void togglefloating(const Arg *arg); | static void togglefloating(const Arg *arg); | ||||
static void togglefullscr(const Arg *arg); | |||||
static void togglealwaysontop(const Arg *arg); | static void togglealwaysontop(const Arg *arg); | ||||
static void toggletag(const Arg *arg); | static void toggletag(const Arg *arg); | ||||
static void toggleview(const Arg *arg); | static void toggleview(const Arg *arg); | ||||
@@ -1016,7 +1017,7 @@ drawbar(Monitor *m) | |||||
x += w; | x += w; | ||||
} | } | ||||
w = blw = TEXTW(m->ltsymbol); | 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); | x = drw_text(drw, x, y, w, th, lrpad / 2, m->ltsymbol, 0); | ||||
if ((w = mw - sw - stw - x) > th) { | if ((w = mw - sw - stw - x) > th) { | ||||
@@ -1062,7 +1063,7 @@ drawtab(Monitor *m) { | |||||
int sorted_label_widths[MAXTABS]; | int sorted_label_widths[MAXTABS]; | ||||
int tot_width; | int tot_width; | ||||
int maxsize = bh; | int maxsize = bh; | ||||
int x = 0; | |||||
int x = borderpx, y = borderpx; | |||||
int w = 0; | int w = 0; | ||||
//view_info: indicate the tag which is displayed in the view | //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; | if(m->tab_widths[i] > maxsize) m->tab_widths[i] = maxsize; | ||||
w = m->tab_widths[i]; | w = m->tab_widths[i]; | ||||
drw_setscheme(drw, (c == m->sel) ? scheme[SchemeSel] : scheme[SchemeNorm]); | 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; | x += w; | ||||
++i; | ++i; | ||||
} | } | ||||
@@ -1123,12 +1124,12 @@ drawtab(Monitor *m) { | |||||
/* cleans interspace between window names and current viewed tag label */ | /* cleans interspace between window names and current viewed tag label */ | ||||
w = m->ww - view_info_w - x; | 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 */ | /* view info */ | ||||
x += w; | x += w; | ||||
w = view_info_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); | 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[CurNormal] = drw_cur_create(drw, XC_left_ptr); | ||||
cursor[CurResize] = drw_cur_create(drw, XC_sizing); | cursor[CurResize] = drw_cur_create(drw, XC_sizing); | ||||
cursor[CurMove] = drw_cur_create(drw, XC_fleur); | cursor[CurMove] = drw_cur_create(drw, XC_fleur); | ||||
cursor[CurHand] = drw_cur_create(drw, XC_hand2); | |||||
/* init appearance */ | /* init appearance */ | ||||
if (LENGTH(tags) > LENGTH(tagsel)) | if (LENGTH(tags) > LENGTH(tagsel)) | ||||
die("too few color schemes for the tags"); | die("too few color schemes for the tags"); | ||||
@@ -2225,6 +2227,13 @@ togglealwaysontop(const Arg *arg) | |||||
arrange(selmon); | arrange(selmon); | ||||
} | } | ||||
void | |||||
togglefullscr(const Arg *arg) | |||||
{ | |||||
if(selmon->sel) | |||||
setfullscreen(selmon->sel, !selmon->sel->isfullscreen); | |||||
} | |||||
void | void | ||||
toggletag(const Arg *arg) | toggletag(const Arg *arg) | ||||
{ | { | ||||
@@ -2352,18 +2361,20 @@ updatebars(void) | |||||
}; | }; | ||||
XClassHint ch = {"dwm", "dwm"}; | XClassHint ch = {"dwm", "dwm"}; | ||||
for (m = mons; m; m = m->next) { | 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) | if (m->barwin) | ||||
continue; | continue; | ||||
m->barwin = XCreateWindow(dpy, root, m->wx + sp, m->by + vp, m->ww - 2 * sp, 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), | CopyFromParent, DefaultVisual(dpy, screen), | ||||
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); | CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); | ||||
XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor); | |||||
XDefineCursor(dpy, m->barwin, cursor[CurHand]->cursor); | |||||
XMapRaised(dpy, m->barwin); | 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); | XSetClassHint(dpy, m->barwin, &ch); | ||||
} | } | ||||
} | } | ||||
@@ -2391,12 +2402,12 @@ updatebarpos(Monitor *m) | |||||
if(m->showtab == showtab_always | if(m->showtab == showtab_always | ||||
|| ((m->showtab == showtab_auto) && (nvis > 1) && (m->lt[m->sellt]->arrange == monocle))){ | || ((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 ) | if ( m->toptab ) | ||||
m->wy += th; | |||||
m->wy += th + vp; | |||||
} else { | } else { | ||||
m->ty = -th; | |||||
m->ty = -th - vp; | |||||
} | } | ||||
} | } | ||||
@@ -64,7 +64,7 @@ | |||||
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) | #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) | ||||
/* enums */ | /* enums */ | ||||
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ | |||||
enum { CurNormal, CurResize, CurMove, CurHand, CurLast }; /* cursor */ | |||||
enum { SchemeNorm, SchemeSel, SchemeDis}; /* color schemes */ | enum { SchemeNorm, SchemeSel, SchemeDis}; /* color schemes */ | ||||
enum { NetSupported, NetWMName, NetWMState, NetWMCheck, | enum { NetSupported, NetWMName, NetWMState, NetWMCheck, | ||||
NetWMFullscreen, NetActiveWindow, NetWMWindowType, | 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 bh, blw = 0; /* bar geometry */ | ||||
static int th = 0; /* tab bar geometry */ | static int th = 0; /* tab bar geometry */ | ||||
static int lrpad; /* sum of left and right padding for text */ | 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 int (*xerrorxlib)(Display *, XErrorEvent *); | ||||
static unsigned int numlockmask = 0; | static unsigned int numlockmask = 0; | ||||
static void (*handler[LASTEvent]) (XEvent *) = { | 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() | //refreshing display of status bar. The tab bar is handled by the arrange() | ||||
//method, which is called below | //method, which is called below | ||||
for (m = mons; m; m = m->next){ | 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); | focus(NULL); | ||||
arrange(NULL); | arrange(NULL); | ||||
@@ -911,12 +913,12 @@ drawstatusbar(Monitor *m, int bh, char* stext) { | |||||
text = p; | text = p; | ||||
w += horizpadbar; | w += horizpadbar; | ||||
ret = x = m->ww - borderpx - w; | |||||
ret = x = m->ww - borderpx - w - 2 * sp; | |||||
drw_setscheme(drw, scheme[LENGTH(colors)]); | drw_setscheme(drw, scheme[LENGTH(colors)]); | ||||
drw->scheme[ColFg] = scheme[SchemeNorm][ColFg]; | drw->scheme[ColFg] = scheme[SchemeNorm][ColFg]; | ||||
drw->scheme[ColBg] = scheme[SchemeNorm][ColBg]; | 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; | x += horizpadbar / 2; | ||||
/* process status text */ | /* process status text */ | ||||
@@ -1014,12 +1016,12 @@ drawbar(Monitor *m) | |||||
x += w; | x += w; | ||||
} | } | ||||
w = blw = TEXTW(m->ltsymbol); | 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); | x = drw_text(drw, x, y, w, th, lrpad / 2, m->ltsymbol, 0); | ||||
if ((w = mw - sw - stw - x) > th) { | if ((w = mw - sw - stw - x) > th) { | ||||
drw_setscheme(drw, scheme[SchemeNorm]); | 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); | drw_map(drw, m->barwin, 0, 0, m->ww, bh); | ||||
} | } | ||||
@@ -1060,7 +1062,7 @@ drawtab(Monitor *m) { | |||||
int sorted_label_widths[MAXTABS]; | int sorted_label_widths[MAXTABS]; | ||||
int tot_width; | int tot_width; | ||||
int maxsize = bh; | int maxsize = bh; | ||||
int x = 0; | |||||
int x = borderpx, y = borderpx; | |||||
int w = 0; | int w = 0; | ||||
//view_info: indicate the tag which is displayed in the view | //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; | if(m->tab_widths[i] > maxsize) m->tab_widths[i] = maxsize; | ||||
w = m->tab_widths[i]; | w = m->tab_widths[i]; | ||||
drw_setscheme(drw, (c == m->sel) ? scheme[SchemeSel] : scheme[SchemeNorm]); | 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; | x += w; | ||||
++i; | ++i; | ||||
} | } | ||||
@@ -1121,12 +1123,12 @@ drawtab(Monitor *m) { | |||||
/* cleans interspace between window names and current viewed tag label */ | /* cleans interspace between window names and current viewed tag label */ | ||||
w = m->ww - view_info_w - x; | 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 */ | /* view info */ | ||||
x += w; | x += w; | ||||
w = view_info_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); | 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; | bh = user_bh ? user_bh : drw->fonts->h + 2 + vertpadbar + borderpx * 2; | ||||
th = bh; | th = bh; | ||||
updategeom(); | updategeom(); | ||||
sp = sidepad; | |||||
vp = (topbar == 1) ? vertpad : - vertpad; | |||||
/* init atoms */ | /* init atoms */ | ||||
utf8string = XInternAtom(dpy, "UTF8_STRING", False); | utf8string = XInternAtom(dpy, "UTF8_STRING", False); | ||||
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); | wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); | ||||
@@ -2006,6 +2011,7 @@ setup(void) | |||||
cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr); | cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr); | ||||
cursor[CurResize] = drw_cur_create(drw, XC_sizing); | cursor[CurResize] = drw_cur_create(drw, XC_sizing); | ||||
cursor[CurMove] = drw_cur_create(drw, XC_fleur); | cursor[CurMove] = drw_cur_create(drw, XC_fleur); | ||||
cursor[CurHand] = drw_cur_create(drw, XC_hand2); | |||||
/* init appearance */ | /* init appearance */ | ||||
if (LENGTH(tags) > LENGTH(tagsel)) | if (LENGTH(tags) > LENGTH(tagsel)) | ||||
die("too few color schemes for the tags"); | die("too few color schemes for the tags"); | ||||
@@ -2020,6 +2026,7 @@ setup(void) | |||||
/* init bars */ | /* init bars */ | ||||
updatebars(); | updatebars(); | ||||
updatestatus(); | updatestatus(); | ||||
updatebarpos(selmon); | |||||
/* supporting window for NetWMCheck */ | /* supporting window for NetWMCheck */ | ||||
wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); | wmcheckwin = XCreateSimpleWindow(dpy, root, 0, 0, 1, 1, 0, 0, 0); | ||||
XChangeProperty(dpy, wmcheckwin, netatom[NetWMCheck], XA_WINDOW, 32, | 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; | selmon->showbar = selmon->pertag->showbars[selmon->pertag->curtag] = !selmon->showbar; | ||||
updatebarpos(selmon); | 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); | arrange(selmon); | ||||
} | } | ||||
@@ -2346,18 +2353,20 @@ updatebars(void) | |||||
}; | }; | ||||
XClassHint ch = {"dwm", "dwm"}; | XClassHint ch = {"dwm", "dwm"}; | ||||
for (m = mons; m; m = m->next) { | 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) | if (m->barwin) | ||||
continue; | 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), | CopyFromParent, DefaultVisual(dpy, screen), | ||||
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); | CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); | ||||
XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor); | |||||
XDefineCursor(dpy, m->barwin, cursor[CurHand]->cursor); | |||||
XMapRaised(dpy, m->barwin); | 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); | XSetClassHint(dpy, m->barwin, &ch); | ||||
} | } | ||||
} | } | ||||
@@ -2371,12 +2380,12 @@ updatebarpos(Monitor *m) | |||||
m->wy = m->my; | m->wy = m->my; | ||||
m->wh = m->mh; | m->wh = m->mh; | ||||
if (m->showbar) { | 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 ) | if ( m->topbar ) | ||||
m->wy += bh; | |||||
m->wy += bh + vp; | |||||
} else { | } else { | ||||
m->by = -bh; | |||||
m->by = -bh - vp; | |||||
} | } | ||||
for(c = m->clients; c; c = c->next){ | for(c = m->clients; c; c = c->next){ | ||||
@@ -2385,12 +2394,12 @@ updatebarpos(Monitor *m) | |||||
if(m->showtab == showtab_always | if(m->showtab == showtab_always | ||||
|| ((m->showtab == showtab_auto) && (nvis > 1) && (m->lt[m->sellt]->arrange == monocle))){ | || ((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 ) | if ( m->toptab ) | ||||
m->wy += th; | |||||
m->wy += th + vp; | |||||
} else { | } else { | ||||
m->ty = -th; | |||||
m->ty = -th - vp; | |||||
} | } | ||||
} | } | ||||
@@ -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); |