2e6a4ed20f
grabkeys() now iterates the full keymap and grabs every keycode that maps to each bound keysym, instead of relying on XKeysymToKeycode which returns only one. Bluetooth headsets (e.g. Jaybird X2 AVRCP) register as a second keyboard with their own keycodes for XF86AudioPlay/Next/Prev, so the single-keycode grab missed them. The media-key bindings now try pauseallmpv first (per-instance IPC control of any running mpv) and fall back to mpc when no mpv socket is reachable.
317 lines
16 KiB
C
317 lines
16 KiB
C
/* See LICENSE file for copyright and license details. */
|
|
|
|
/* appearance */
|
|
static const unsigned int borderpx = 2; /* border pixel of windows */
|
|
static const unsigned int borderfloatpx = 1; /* border pixel of windows which are floating*/
|
|
static int dowarp = 1; /* default behaviour of mouse. Can be chaned via calling togglewarp*/
|
|
static const unsigned int snap = 10; /* 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 = 20; /* horizontal padding of bar */
|
|
static const char *fonts[] = {
|
|
"monospace:size=13",
|
|
"IPAGothic:size=13",
|
|
"RecMonoLinear Nerd Font:size=11",
|
|
"symbola:size=13",
|
|
};
|
|
static const char dmenufont[] = "monospace:size=13";
|
|
#define bblack "#000000"
|
|
#define nord0 "#2E3440"
|
|
#define nord1 "#3B4252"
|
|
#define nord2 "#434C5E"
|
|
#define nord3 "#4C566A"
|
|
#define nord4 "#D8DEE9"
|
|
#define nord5 "#E5E9F0"
|
|
#define nord6 "#ECEFF4"
|
|
#define nord7 "#8FBCBB"
|
|
#define nord8 "#88C0D0"
|
|
#define nord9 "#81A1C1"
|
|
#define nord10 "#5E81AC"
|
|
#define nord11 "#BF616A"
|
|
#define nord12 "#D08770"
|
|
#define nord13 "#EBCB8B"
|
|
#define nord14 "#A3BE8C"
|
|
#define nord15 "#B48EAD"
|
|
|
|
static char normfgcolor[] = nord4;
|
|
static char normbgcolor[] = nord0;
|
|
static char normbordercolor[] = nord2;
|
|
|
|
static char selfgcolor[] = nord6;
|
|
static char selbgcolor[] = nord10;
|
|
static char selbordercolor[] = nord4;
|
|
|
|
static const char col_urgborder[] = nord11;
|
|
|
|
static const char *colors[][3] = {
|
|
/* fg bg border */
|
|
[SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor },
|
|
[SchemeSel] = { selfgcolor, selbgcolor, selbordercolor },
|
|
[SchemeUrg] = { normfgcolor, normbgcolor, col_urgborder},
|
|
};
|
|
|
|
typedef struct {
|
|
const char *name;
|
|
const void *cmd;
|
|
} Sp;
|
|
const char *spcmd1[] = {"st", "-A", "0.3", "-n", "scratchpadterm", "-t", "Scratchpad", "-g", "120x34", NULL };
|
|
const char *spcmd2[] = {"st", "-A", "0.3", "-n", "scratchcalc", "-t", "Calculator", "-g", "120x34", "-e", "dropdowncalc", NULL };
|
|
const char *spcmd3[] = {"st", "-n", "matrix_ethno", "-A", "0.1", "-t", "Ethno", "-e", "gomuks_profile", "ethno", NULL};
|
|
const char *spcmd4[] = {"st", "-n", "matrix_bocken", "-A", "0.1", "-t", "Bocken" , "-e", "gomuks_profile", "bocken", NULL };
|
|
|
|
static Sp scratchpads[] = {
|
|
/* name cmd */
|
|
{"scratchpad", spcmd1},
|
|
{"dropdowncalc", spcmd2},
|
|
{"matrix_ethno", spcmd3},
|
|
{"matrix_bocken", spcmd4},
|
|
};
|
|
|
|
/* tagging */
|
|
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
|
|
static const Rule rules[] = {
|
|
/* xprop(1):
|
|
* WM_CLASS(STRING) = instance, class
|
|
* WM_NAME(STRING) = title
|
|
*/
|
|
/* class instance title tags mask isfloating monitor */
|
|
{NULL, NULL, "zoom", 0, 1, -1},
|
|
{ "Gimp", NULL, NULL, 0, 1, -1 },
|
|
{ "st", NULL, NULL, 0, 0, -1 },
|
|
{ "vncviewer", NULL, NULL, 0, 1, -1 },
|
|
{ "Vncviewer", NULL, NULL, 0, 1, -1 },
|
|
{ "Firefox", NULL, NULL, 1 << 8, 0, -1 },
|
|
{ NULL, "scratchpadterm", NULL, SPTAG(0), 1, -1 },
|
|
{ NULL, "scratchcalc", NULL, SPTAG(1), 1, -1 },
|
|
{ NULL, "matrix_ethno", NULL, SPTAG(2), 0, -1 },
|
|
{ NULL, "matrix_bocken", NULL, SPTAG(3), 0, -1 },
|
|
|
|
};
|
|
|
|
/* layout(s) */
|
|
static const float mfact = 0.50; /* factor of master area size [0.05..0.95] */
|
|
static const float firstwindowoffset = 0.05; /* render first window 5% larger than mfact would for firstwindowcentered layout */
|
|
static const int nmaster = 1; /* number of clients in master area */
|
|
static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
|
|
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
|
|
|
|
static const Layout layouts[] = {
|
|
/* symbol arrange function */
|
|
{ "1[\\]", centeredfirstwindow}, /* Master in middle, dwindle if more than masters*/
|
|
{ "[\\]", dwindle }, /* Default: Master on left, slaves on right */
|
|
{ "[@]", spiral }, /* first entry is default */
|
|
{ ">M>", centeredfloatingmaster }, /* Same but master floats */
|
|
{ "H[]", deck }, /* Master on left, slaves in monocle-like mode on right */
|
|
{ "[]=", tile }, /* Default: Master on left, slaves on right */
|
|
{ "TTT", bstack }, /* Master on top, slaves on bottom */
|
|
{ "[M]", monocle },
|
|
{ "===", bstackhoriz },
|
|
{ "><>", NULL }, /* no layout function means floating behavior */
|
|
};
|
|
|
|
/* key definitions */
|
|
#define MODKEY Mod4Mask
|
|
#define TAGKEYS(KEY,TAG) \
|
|
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
|
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
|
|
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
|
|
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
|
|
|
|
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
|
|
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
|
|
|
/* commands */
|
|
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
|
|
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, NULL };
|
|
static const char *termcmd[] = { "st", NULL };
|
|
|
|
#include "movestack.c"
|
|
#include <X11/XF86keysym.h>
|
|
#include "shiftview.c"
|
|
static Key keys[] = {
|
|
/* { MODKEY|ShiftMask, XK_Escape, spawn, SHCMD("") }, */
|
|
{ MODKEY, XK_grave, spawn, SHCMD("dmenuunicode") },
|
|
/* { MODKEY|ShiftMask, XK_grave, togglescratch, SHCMD("") }, */
|
|
TAGKEYS( XK_1, 0)
|
|
TAGKEYS( XK_2, 1)
|
|
TAGKEYS( XK_3, 2)
|
|
TAGKEYS( XK_4, 3)
|
|
TAGKEYS( XK_5, 4)
|
|
TAGKEYS( XK_6, 5)
|
|
TAGKEYS( XK_7, 6)
|
|
TAGKEYS( XK_8, 7)
|
|
TAGKEYS( XK_9, 8)
|
|
{ MODKEY, XK_0, view, {.ui = ~0 } },
|
|
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
|
|
{ MODKEY, XK_minus, spawn, SHCMD("lmc down 5 ; pkill -RTMIN+10 dwmblocks") },
|
|
{ MODKEY|ShiftMask, XK_minus, spawn, SHCMD("lmc down 15 ; pkill -RTMIN+10 dwmblocks") },
|
|
{ MODKEY, XK_equal, spawn, SHCMD("lmc up 5 ; pkill -RTMIN+10 dwmblocks") },
|
|
{ MODKEY|ShiftMask, XK_equal, spawn, SHCMD("lmc up 15; pkill -RTMIN+10 dwmblocks") },
|
|
{ MODKEY, XK_BackSpace, spawn, SHCMD("prompt \"Hibernate computer?\" \" sudo systemctl hibernate\"") },
|
|
{ MODKEY|ShiftMask, XK_BackSpace, spawn, SHCMD("prompt \"Reboot computer?\" \"sudo -A reboot\"") },
|
|
{ MODKEY, XK_Tab, view, {0} },
|
|
/* { MODKEY|ShiftMask, XK_Tab, spawn, SHCMD("") }, */
|
|
{ MODKEY, XK_q, killclient, {0} },
|
|
/* { MODKEY|ShiftMask, XK_q, spawn, SHCMD("") }, */
|
|
{ MODKEY, XK_w, spawn, SHCMD("$BROWSER") },
|
|
{ MODKEY|ShiftMask, XK_w, spawn, SHCMD("chromium") }, /*using ungoogled-chromium as backup browser*/
|
|
{ MODKEY|ShiftMask|ControlMask, XK_w, togglewarp, {0} },
|
|
{ MODKEY, XK_e, spawn, SHCMD("st -e neomutt -e 'set sidebar_visible = no'; pkill -RTMIN+13 dwmblocks") },
|
|
{ MODKEY|ShiftMask, XK_e, togglescratch, {.ui = 2 } },
|
|
|
|
/* { MODKEY|ShiftMask, XK_e, spawn, SHCMD("element-desktop") }, */
|
|
{ MODKEY, XK_r, spawn, SHCMD("st -e $FILE") },
|
|
{ MODKEY|ShiftMask, XK_r, togglescratch, {.ui = 3}},
|
|
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
|
|
{ MODKEY|ShiftMask, XK_t, setlayout, {.v = &layouts[1]} },
|
|
{ MODKEY, XK_y, setlayout, {.v = &layouts[2]} },
|
|
{ MODKEY|ShiftMask, XK_y, setlayout, {.v = &layouts[3]} },
|
|
{ MODKEY, XK_u, setlayout, {.v = &layouts[4]} },
|
|
{ MODKEY|ShiftMask, XK_u, setlayout, {.v = &layouts[5]} },
|
|
{ MODKEY, XK_i, setlayout, {.v = &layouts[6]} },
|
|
{ MODKEY|ShiftMask, XK_i, setlayout, {.v = &layouts[7]} },
|
|
{ MODKEY, XK_o, incnmaster, {.i = +1 } },
|
|
{ MODKEY|ShiftMask, XK_o, incnmaster, {.i = -1 } },
|
|
{ MODKEY, XK_p, spawn, SHCMD("mpc toggle") },
|
|
{ MODKEY|ShiftMask, XK_p, spawn, SHCMD("passmenu2") },
|
|
/* { MODKEY, XK_bracketleft, spawn, SHCMD("mpc seek -10") }, */
|
|
/* { MODKEY|ShiftMask, XK_bracketleft, spawn, SHCMD("mpc seek -120") }, */
|
|
/* { MODKEY, XK_bracketright, spawn, SHCMD("mpc seek +10") }, */
|
|
/* { MODKEY|ShiftMask, XK_bracketright, spawn, SHCMD("mpc seek +120") }, */
|
|
{ MODKEY, XK_backslash, view, {0} },
|
|
/* { MODKEY|ShiftMask, XK_backslash, spawn, SHCMD("") }, */
|
|
{ MODKEY, XK_a, spawn, SHCMD("st pulsemixer ; pkill -RTMIN+10 dwmblocks") },
|
|
{ MODKEY|ShiftMask, XK_a, spawn, SHCMD("anki") },
|
|
{ MODKEY, XK_s, togglesticky, {.i=False} },
|
|
{ MODKEY|ShiftMask, XK_s, spawn, SHCMD("temp=\"$(pwd)\"; cd $HOME/dox/notes; st $EDITOR $HOME/dox/notes/Main.md; cd \"$temp\"") },
|
|
{ MODKEY, XK_d, spawn, {.v = dmenucmd } },
|
|
{ MODKEY|ShiftMask, XK_d, spawn, SHCMD("de launchdmenu")},
|
|
{ MODKEY, XK_f, togglefullscr, {0} },
|
|
{ MODKEY|ShiftMask, XK_f, setlayout, {.v = &layouts[8]} },
|
|
/*{ MODKEY, XK_g, shiftview, { .i = -1 } },*/
|
|
//{ MODKEY|ShiftMask, XK_g, spawn, SHCMD("hover center") },
|
|
{ MODKEY, XK_h, focusmon, {.i = -1 } },
|
|
{ MODKEY|ShiftMask, XK_h, setmfact, {.f = -0.05} },
|
|
{ MODKEY|ControlMask, XK_h, tagmon, {.i = -1 } },
|
|
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
|
{ MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } },
|
|
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
|
{ MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } },
|
|
{ MODKEY, XK_l, focusmon, {.i = +1 } },
|
|
{ MODKEY|ShiftMask, XK_l, setmfact, {.f = +0.05} },
|
|
{ MODKEY|ControlMask, XK_l, tagmon, {.i = +1 } },
|
|
/*{ MODKEY, XK_semicolon, shiftview, { .i = 1 } }, */
|
|
/* { MODKEY|ShiftMask, XK_semicolon, shiftview, SHCMD("") }, */
|
|
/* { MODKEY, XK_apostrophe, spawn, SHCMD("") }, */
|
|
/* { MODKEY|ShiftMask, XK_apostrophe, spawn, SHCMD("") }, */
|
|
{ MODKEY, XK_Return, spawn, {.v = termcmd } },
|
|
{ MODKEY|ShiftMask, XK_Return, togglescratch, {.ui = 0 } },
|
|
{ MODKEY, XK_z, spawn, SHCMD("st -e tremc --skip-version-check") },
|
|
/*{ MODKEY|ShiftMask, XK_z, spawn, SHCMD("st -e tremc") },*/
|
|
{ MODKEY, XK_x, spawn, SHCMD("slock & ( sleep 4; xset dpms force off; mpc pause ; pauseallmpv)") },
|
|
{ MODKEY|ShiftMask, XK_x, spawn, SHCMD("prompt \"Shutdown computer?\" \"sudo -A shutdown -h now\"") },
|
|
{ MODKEY, XK_c, togglescratch, {.ui = 1 } },
|
|
{ MODKEY|ShiftMask, XK_c, spawn, SHCMD("pgrep calcurse || st -e calcurse; pkill -RTMIN+8 dwmblocks")},
|
|
{ MODKEY, XK_v, spawn, SHCMD("st -e $EDITOR -c \"VimwikiIndex\"") },
|
|
{ MODKEY|ShiftMask, XK_v, setfloating, { .i=True} },
|
|
{ MODKEY|ShiftMask, XK_v, setsticky, {.i=True} },
|
|
{ ControlMask|ShiftMask, XK_v, spawn, SHCMD("xclip -selection 'primary' -o | xvkbd -xsendevent -file -")},
|
|
{ MODKEY|ShiftMask, XK_v, spawn, SHCMD("hover left") },
|
|
{ MODKEY, XK_b, spawn, SHCMD("bt") },
|
|
{ MODKEY|ShiftMask, XK_b, togglebar, {0} },
|
|
{ MODKEY, XK_n, spawn, SHCMD("pkill newsboat; st -e newsboat; pkill -RTMIN+13 dwmblocks") },
|
|
{ MODKEY|ShiftMask, XK_n, setfloating, { .i=True} },
|
|
{ MODKEY|ShiftMask, XK_n, setsticky, {.i=True} },
|
|
{ MODKEY|ShiftMask, XK_n, spawn, SHCMD("hover right") },
|
|
{ MODKEY, XK_m, spawn, SHCMD("st -e ncmpcpp") },
|
|
{ MODKEY|ShiftMask, XK_m, spawn, SHCMD("dunstctl set-paused toggle; pkill -RTMIN+5 dwmblocks") },
|
|
{ MODKEY, XK_comma, spawn, SHCMD("mpc prev") },
|
|
{ MODKEY|ShiftMask, XK_comma, spawn, SHCMD("mpc seek 0%") },
|
|
{ MODKEY, XK_period, spawn, SHCMD("mpc next") },
|
|
/* { MODKEY|ShiftMask, XK_period, spawn, SHCMD("") }, */
|
|
{ MODKEY, XK_Left, focusmon, {.i = -1 } },
|
|
{ MODKEY|ShiftMask, XK_Left, tagmon, {.i = -1 } },
|
|
{ MODKEY, XK_Right, focusmon, {.i = +1 } },
|
|
{ MODKEY|ShiftMask, XK_Right, tagmon, {.i = +1 } },
|
|
|
|
{ MODKEY, XK_Page_Up, shiftview, { .i = -1 } },
|
|
{ MODKEY, XK_Page_Down, shiftview, { .i = 1 } },
|
|
{ MODKEY, XK_Insert, spawn, SHCMD("notify-send \"📋 Clipboard contents:\" \"$(xclip -o -selection clipboard)\"") },
|
|
{ MODKEY, XK_F1, spawn, SHCMD("dmenuunicode") },
|
|
{ MODKEY, XK_F2, quit, {0} },
|
|
{ MODKEY|ShiftMask, XK_F2, spawn, SHCMD("killdwm") },
|
|
{ MODKEY, XK_F3, spawn, SHCMD("displayselect") },
|
|
{ MODKEY, XK_F4, spawn, SHCMD("(synclient | grep 'TouchpadOff.*1' && synclient TouchpadOff=0) || synclient TouchpadOff=1") },
|
|
{ MODKEY, XK_F5, spawn, SHCMD("bt") },
|
|
{ MODKEY, XK_F6, spawn, SHCMD("passmenu2") },
|
|
{ MODKEY, XK_F7, spawn, SHCMD("dmenuvpn") },
|
|
{ MODKEY, XK_F8, spawn, SHCMD("mailsync; pkill -RTMIN+13 dwmblocks") },
|
|
{ MODKEY, XK_F9, spawn, SHCMD("dmenumount") },
|
|
{ MODKEY, XK_F10, spawn, SHCMD("dmenuumount") },
|
|
{ MODKEY, XK_F11, spawn, SHCMD("searx") },
|
|
{ MODKEY, XK_F12, spawn, SHCMD("st -e sudo nmtui") },
|
|
/* { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, */
|
|
{ MODKEY, XK_space, zoom, {0} },
|
|
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
|
{ MODKEY|ShiftMask, XK_space, setsticky, {.i = False} },
|
|
//{ ControlMask, XK_space, spawn, SHCMD("dunstctl close-all")},
|
|
{ 0, XK_Print, spawn, SHCMD("maimpick") },
|
|
{ ShiftMask, XK_Print, spawn, SHCMD("maim pic-full-$(date '+%y%m%d-%H%M-%S').png") },
|
|
{ MODKEY, XK_Print, spawn, SHCMD("dmenurecord") },
|
|
{ MODKEY|ShiftMask, XK_Print, spawn, SHCMD("dmenurecord kill") },
|
|
{ MODKEY, XK_Delete, spawn, SHCMD("dmenurecord kill") },
|
|
{ MODKEY, XK_Scroll_Lock, spawn, SHCMD("killall screenkey || screenkey &") },
|
|
|
|
{ 0, XF86XK_AudioMute, spawn, SHCMD("lmc mute; pkill -RTMIN+10 dwmblocks") },
|
|
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("lmc up 5; pkill -RTMIN+10 dwmblocks") },
|
|
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("lmc down 5; pkill -RTMIN+10 dwmblocks") },
|
|
{ 0, XF86XK_AudioPrev, spawn, SHCMD("pauseallmpv prev || mpc prev") },
|
|
{ 0, XF86XK_AudioNext, spawn, SHCMD("pauseallmpv next || mpc next") },
|
|
{ 0, XF86XK_AudioPause, spawn, SHCMD("pauseallmpv pause || mpc pause") },
|
|
{ 0, XF86XK_AudioPlay, spawn, SHCMD("pauseallmpv toggle || mpc toggle") },
|
|
{ 0, XF86XK_AudioStop, spawn, SHCMD("pauseallmpv stop || mpc stop") },
|
|
{ 0, XF86XK_AudioRewind, spawn, SHCMD("pauseallmpv seek-back || mpc seek -10") },
|
|
{ 0, XF86XK_AudioForward, spawn, SHCMD("pauseallmpv seek-fwd || mpc seek +10") },
|
|
{ 0, XF86XK_AudioMedia, spawn, SHCMD("st -e ncmpcpp") },
|
|
{ 0, XF86XK_Display, spawn, SHCMD("displayselect")},
|
|
|
|
{ 0, XF86XK_PowerOff, spawn, SHCMD("[ \"$(printf \"No\\nYes\" | dmenu -i -n -nb darkred -sb red -sf white -nf gray -p \"Shutdown computer?\")\" = Yes ] && sudo -A shutdown -h now") },
|
|
{ 0, XF86XK_Calculator, spawn, SHCMD("st -e bc -l") },
|
|
{ 0, XF86XK_Sleep, spawn, SHCMD("sudo -A zzz") },
|
|
{ 0, XF86XK_WWW, spawn, SHCMD("$BROWSER") },
|
|
{ 0, XF86XK_DOS, spawn, SHCMD("st") },
|
|
{ 0, XF86XK_ScreenSaver, spawn, SHCMD("slock & xset dpms force off; mpc pause; pauseallmpv") },
|
|
{ 0, XF86XK_TaskPane, spawn, SHCMD("st -e htop") },
|
|
{ 0, XF86XK_Mail, spawn, SHCMD("st -e neomutt ; pkill -RTMIN+12 dwmblocks") },
|
|
{ 0, XF86XK_MyComputer, spawn, SHCMD("st -e lf /") },
|
|
/* { 0, XF86XK_Battery, spawn, SHCMD("") }, */
|
|
{ 0, XF86XK_Launch1, spawn, SHCMD("xset dpms force off") },
|
|
{ 0, XF86XK_TouchpadToggle, spawn, SHCMD("(synclient | grep 'TouchpadOff.*1' && synclient TouchpadOff=0) || synclient TouchpadOff=1") },
|
|
{ 0, XF86XK_TouchpadOff, spawn, SHCMD("synclient TouchpadOff=1") },
|
|
{ 0, XF86XK_TouchpadOn, spawn, SHCMD("synclient TouchpadOff=0") },
|
|
{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("sb-bright +5") },
|
|
{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("sb-bright -5;") },
|
|
{ ShiftMask, XF86XK_MonBrightnessDown, spawn, SHCMD("sb-bright 1") },
|
|
{ ShiftMask, XF86XK_MonBrightnessUp, spawn, SHCMD("sb-bright 100") },
|
|
|
|
};
|
|
|
|
/* button definitions */
|
|
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
|
|
static Button buttons[] = {
|
|
/* click event mask button function argument */
|
|
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
|
|
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
|
|
{ ClkWinTitle, 0, Button2, zoom, {0} },
|
|
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
|
|
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
|
|
{ ClkClientWin, MODKEY, Button2, setfloating, {.i=True} },
|
|
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
|
|
{ ClkTagBar, 0, Button1, view, {0} },
|
|
{ ClkTagBar, 0, Button3, toggleview, {0} },
|
|
{ ClkTagBar, MODKEY, Button1, tag, {0} },
|
|
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
|
|
};
|
|
|