388 lines
28 KiB
C
388 lines
28 KiB
C
/* Appearance */
|
|
static const unsigned int borderpx = 1; /* border pixel of windows */
|
|
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 = 0; /* vertical padding of bar */
|
|
static const int sidepad = 0; /* horizontal padding of bar */
|
|
static const int horizpadbar = 2; /* horizontal padding for statusbar */
|
|
static const int vertpadbar = 4; /* vertical padding for statusbar */
|
|
static const int rmaster = 0; /* 1 means master-area is initially on the left */
|
|
static const char *fonts[] = {"Symbols Nerd Font Mono:size=12", "mononoki Nerd Font:size=12"};
|
|
static const char dmenufont[] = {"mononoki Nerd Font:size=12"};
|
|
static const char col_gray1[] = "#1d2021";
|
|
static const char col_gray2[] = "#32302f";
|
|
static const char col_gray3[] = "#d5c4a1";
|
|
static const char col_gray4[] = "#fbf1c7";
|
|
static const char col_cyan[] = "#cc241d";
|
|
static const unsigned int baralpha = 0xd0;
|
|
static const unsigned int borderalpha = OPAQUE;
|
|
static const XPoint stickyicon[] = { {0,0}, {4,0}, {4,8}, {2,6}, {0,8}, {0,0} }; /* represents the icon as an array of vertices */
|
|
static const XPoint stickyiconbb = {4,8}; /* defines the bottom right corner of the polygon's bounding box (speeds up scaling) */
|
|
|
|
#define ICONSIZE 16 /* window icon size */
|
|
#define ICONSPACING 5 /* space between window icon and title (only when text is truncated) */
|
|
|
|
/* Color Definitions */
|
|
static const char *colors[][3] = {
|
|
/* fg bg border */
|
|
[SchemeNorm] = {col_gray3, col_gray1, col_gray2},
|
|
[SchemeSel] = {col_gray4, col_cyan, col_cyan},
|
|
};
|
|
|
|
static const unsigned int alphas[][3] = {
|
|
/* fg bg border */
|
|
[SchemeNorm] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeSel] = {OPAQUE, baralpha, borderalpha},
|
|
};
|
|
|
|
|
|
/* Scratchpad Definitions */
|
|
const char *spcmd1[] = {"st", "-n", "sptrm", "-c", "sptrm", "-g", "140x35", NULL};
|
|
const char *spcmd2[] = {"st", "-n", "sptop", "-c", "sptop", "-g", "140x35", "-e", "btop", NULL};
|
|
const char *spcmd3[] = {"st", "-n", "sppmx", "-c", "sppmx", "-g", "140x35", "-e", "pulsemixer", NULL};
|
|
const char *spcmd4[] = {"st", "-n", "spfli", "-c", "spfli", "-g", "140x35", "-e", "flix-cli", NULL};
|
|
const char *spcmd5[] = {"st", "-n", "spani", "-c", "spani", "-g", "140x35", "-e", "ani-cli", NULL};
|
|
const char *spcmd6[] = {"st", "-n", "spytf", "-c", "spytf", "-g", "140x35", "-e", "ytfzf", "-flst", NULL};
|
|
const char *spcmd7[] = {"st", "-n", "spytm", "-c", "spytm", "-g", "140x35", "-e", "ytfzf", "-mlst", NULL};
|
|
const char *spcmd8[] = {"st", "-n", "spmsc", "-c", "spmsc", "-g", "140x35", "-e", "musikcube", NULL};
|
|
const char *spcmd9[] = {"st", "-n", "spflm", "-c", "spflm", "-g", "140x35", "-e", "yazi", NULL};
|
|
const char *spcmd10[] = {"st", "-n", "sprss", "-c", "sprss", "-g", "140x35", "-e", "newsboat", NULL};
|
|
const char *spcmd11[] = {"st", "-n", "sptut", "-c", "sptut", "-g", "140x35", "-e", "tut", NULL};
|
|
const char *spcmd12[] = {"flatpak", "run", "com.bitwarden.desktop", NULL};
|
|
|
|
static Sp scratchpads[] = {
|
|
/* NAME CMD */
|
|
{"sptrm", spcmd1},
|
|
{"sptop", spcmd2},
|
|
{"sppmx", spcmd3},
|
|
{"spfli", spcmd4},
|
|
{"spani", spcmd5},
|
|
{"spytf", spcmd6},
|
|
{"spytm", spcmd7},
|
|
{"spmsc", spcmd8},
|
|
{"spflm", spcmd9},
|
|
{"sprss", spcmd10},
|
|
{"sptut", spcmd11},
|
|
{"spbit", spcmd12},
|
|
};
|
|
|
|
/* Tag Definitions */
|
|
static const char *tags[] = {
|
|
"", /* EDITOR */
|
|
"", /* TESTING */
|
|
"", /* WEB */
|
|
"", /* CHAT */
|
|
"", /* AUDIO */
|
|
"", /* VIDEO */
|
|
"", /* GRAPHICS */
|
|
"", /* OFFICE */
|
|
"" /* GAMES */
|
|
};
|
|
|
|
/* Window Rules */
|
|
static const Rule rules[] = {
|
|
/* xprop(1):
|
|
* WM_CLASS(STRING) = instance, class
|
|
* WM_NAME(STRING) = title
|
|
*/
|
|
/* CLASS - INSTANCE - TITLE - TAGS MASK - ISFLOATING - MONITOR */
|
|
/* 0 - No Tag */
|
|
{"Galculator", NULL, NULL, 0, 1, -1},
|
|
{"Qalculate-gtk", NULL, NULL, 0, 1, -1},
|
|
{"Blueman-manager", NULL, NULL, 0, 1, -1},
|
|
{"Gpick", NULL, NULL, 0, 1, -1},
|
|
{"Kruler", NULL, NULL, 0, 1, -1},
|
|
{"Tor Browser", NULL, NULL, 0, 1, -1},
|
|
{"Wpa_gui", NULL, NULL, 0, 1, -1},
|
|
{"veromix", NULL, NULL, 0, 1, -1},
|
|
{"xtightvncviewer", NULL, NULL, 0, 1, -1},
|
|
/* 1 - Code Tag */
|
|
{"editor", NULL, NULL, 1, 0, -1},
|
|
{"lvim", NULL, NULL, 1, 0, -1},
|
|
{"Emacs", NULL, NULL, 1, 0, -1},
|
|
{"Godot", NULL, NULL, 1, 0, -1},
|
|
{"neovim", NULL, NULL, 1, 0, -1},
|
|
{"neovide", NULL, NULL, 1, 0, -1},
|
|
/* 2 - Test Tag */
|
|
{"Virt-manager", NULL, NULL, 1 << 1, 0, -1},
|
|
{"Gnome-boxes", NULL, NULL, 1 << 1, 0, -1},
|
|
/* 3 - Web Tag */
|
|
{"LibreWolf", NULL, NULL, 1 << 2, 0, -1},
|
|
{"libreWolf", NULL, NULL, 1 << 2, 0, -1},
|
|
{"librewolf-default", NULL, NULL, 1 << 2, 0, -1},
|
|
{"firefox", NULL, NULL, 1 << 2, 0, -1},
|
|
{"Luakit", NULL, NULL, 1 << 2, 0, -1},
|
|
{"qutebrowser", NULL, NULL, 1 << 2, 0, -1},
|
|
{"Chromium", NULL, NULL, 1 << 2, 0, -1},
|
|
{"Brave-browser", NULL, NULL, 1 << 2, 0, -1},
|
|
{"newsboat", NULL, NULL, 1 << 2, 0, -1},
|
|
/* 4 - Chat Tag */
|
|
{"Signal", NULL, NULL, 1 << 3, 0, -1},
|
|
{"gomuks", NULL, NULL, 1 << 3, 0, -1},
|
|
{"Revolt", NULL, NULL, 1 << 3, 0, -1},
|
|
{"Element", NULL, NULL, 1 << 3, 0, -1},
|
|
/* 5 - Audio Tools Tag */
|
|
{"Audacity", NULL, NULL, 1 << 4, 0, -1},
|
|
{"Ardour", NULL, NULL, 1 << 4, 0, -1},
|
|
{"Carla2", NULL, NULL, 1 << 4, 0, -1},
|
|
{"Carla2-Control", NULL, NULL, 1 << 4, 0, -1},
|
|
{"QjackCtl", NULL, NULL, 1 << 4, 1, -1},
|
|
{"lsp-plugins", NULL, NULL, 1 << 4, 1, -1},
|
|
{"qpwgraph", NULL, NULL, 1 << 4, 0, -1},
|
|
{"Cadence", NULL, NULL, 1 << 4, 0, -1},
|
|
{"easyeffects", NULL, NULL, 1 << 4, 0, -1},
|
|
/* 6 - Video Tag */
|
|
{"kdenlive", NULL, NULL, 1 << 5, 0, -1},
|
|
{"Pitivi", NULL, NULL, 1 << 5, 0, -1},
|
|
{"Natron", NULL, NULL, 1 << 5, 0, -1},
|
|
{"SimpleScreenRecorder", NULL, NULL, 1 << 5, 0, -1},
|
|
{"Ghb", NULL, NULL, 1 << 5, 0, -1},
|
|
{"obs", NULL, NULL, 1 << 5, 0, -1},
|
|
{"mpv", NULL, NULL, 1 << 5, 0, -1},
|
|
/* 7 - Graphics Tools Tag */
|
|
{"Blender", NULL, NULL, 1 << 6, 0, -1},
|
|
{"Gimp-2.10", NULL, NULL, 1 << 6, 0, -1},
|
|
{"krita", NULL, NULL, 1 << 6, 0, -1},
|
|
{"Inkscape", NULL, NULL, 1 << 6, 0, -1},
|
|
{"Xournalpp", NULL, NULL, 1 << 6, 0, -1},
|
|
{"Com.github.xournalpp.xournalpp", NULL, NULL, 1 << 6, 0, -1},
|
|
/* 8 - Office Tag */
|
|
{"DesktopEditors", NULL, NULL, 1 << 7, 0, -1},
|
|
{"Soffice", "soffice", NULL, 1 << 7, 0, -1},
|
|
{"libreoffice-startcenter", NULL, NULL, 1 << 7, 0, -1},
|
|
{"libreoffice-calc", NULL, NULL, 1 << 7, 0, -1},
|
|
{"libreoffice-writer", NULL, NULL, 1 << 7, 0, -1},
|
|
{"libreoffice-impress", NULL, NULL, 1 << 7, 0, -1},
|
|
{"libreoffice-base", NULL, NULL, 1 << 7, 0, -1},
|
|
{"libreoffice-draw", NULL, NULL, 1 << 7, 0, -1},
|
|
{"libreoffice-math", NULL, NULL, 1 << 7, 0, -1},
|
|
{"Joplin", NULL, NULL, 1 << 7, 0, -1},
|
|
{"Notesnook", NULL, NULL, 1 << 7, 0, -1},
|
|
{"com.github.johnfactotum.Foliate", NULL, NULL, 1 << 7, 0, -1},
|
|
/* 9 - Games Tag */
|
|
{"retroarch", NULL, NULL, 1 << 8, 0, -1},
|
|
{"steam", NULL, NULL, 1 << 8, 0, -1},
|
|
{"airshipper", NULL, NULL, 1 << 8, 0, -1},
|
|
{"pyrogenesis", NULL, NULL, 1 << 8, 0, -1},
|
|
{"DarkPlaces", NULL, NULL, 1 << 8, 0, -1},
|
|
{"xonotic-sdl", NULL, NULL, 1 << 8, 0, -1},
|
|
{"supertuxkart-sdl", NULL, NULL, 1 << 8, 0, -1},
|
|
{"supertux2", NULL, NULL, 1 << 8, 0, -1},
|
|
{"Minetest", NULL, NULL, 1 << 8, 0, -1},
|
|
{"openttd", NULL, NULL, 1 << 8, 0, -1},
|
|
{"warzone2100", NULL, NULL, 1 << 8, 0, -1},
|
|
{"wesnoth", NULL, NULL, 1 << 8, 0, -1},
|
|
/* Scratchpads */
|
|
{NULL, "sptrm", NULL, SPTAG(0), 1, -1},
|
|
{NULL, "sptop", NULL, SPTAG(1), 1, -1},
|
|
{NULL, "sppmx", NULL, SPTAG(2), 1, -1},
|
|
{NULL, "spfli", NULL, SPTAG(3), 1, -1},
|
|
{NULL, "spani", NULL, SPTAG(4), 1, -1},
|
|
{NULL, "spytf", NULL, SPTAG(5), 1, -1},
|
|
{NULL, "spytm", NULL, SPTAG(6), 1, -1},
|
|
{NULL, "spmsc", NULL, SPTAG(7), 1, -1},
|
|
{NULL, "spflm", NULL, SPTAG(8), 1, -1},
|
|
{NULL, "sprss", NULL, SPTAG(9), 1, -1},
|
|
{NULL, "sptut", NULL, SPTAG(10), 1, -1},
|
|
{"Bitwarden", NULL, NULL, SPTAG(11), 1, -1},
|
|
};
|
|
|
|
/* Layout(s) */
|
|
static const float mfact = 0.5; /* factor of master area size [0.05..0.95] */
|
|
static const int nmaster = 1; /* number of clients in master area */
|
|
static const int resizehints = 0; /* 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 */
|
|
{ "[]=", tile }, /* first entry is default */
|
|
{ "><>", NULL },
|
|
{ "[M]", monocle },
|
|
{ "|||", centeredmaster },
|
|
{ ">|>", centeredfloatingmaster },
|
|
{ "[@]", spiral },
|
|
{ "[\\]", dwindle },
|
|
{ "HHH", grid },
|
|
{ NULL, NULL },
|
|
};
|
|
|
|
/* Tag control keybindings */
|
|
#define MODKEY Mod4Mask
|
|
#define TAGKEYS(KEY,TAG) \
|
|
&((Keychord){1, {{MODKEY, KEY}}, comboview, {.ui = 1 << TAG} }), \
|
|
&((Keychord){1, {{MODKEY|ControlMask, KEY}}, toggleview, {.ui = 1 << TAG} }), \
|
|
&((Keychord){1, {{MODKEY|ShiftMask, KEY}}, combotag, {.ui = 1 << TAG} }), \
|
|
&((Keychord){1, {{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 } }
|
|
|
|
/* Main commands */
|
|
static const char *dmenucmd[] = { "dmenu_run", "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
|
|
static const char *termcmd[] = { "st", NULL };
|
|
static const char *editor[] = { "st", "-n", "editor", "-c", "editor", "-e", ".local/bin/lvim", NULL};
|
|
static const char *browser[] = { "flatpak", "run", "org.mozilla.firefox", NULL };
|
|
static const char *chat[] = { "flatpak", "run", "org.signal.Signal", NULL };
|
|
static const char *vm[] = { "virt-manager", NULL };
|
|
static const char *office[] = { "flatpak", "run", "org.libreoffice.LibreOffice", NULL };
|
|
static const char *videoeditor[] = { "flatpak", "run", "org.kde.kdenlive", NULL };
|
|
static const char *imgeditor[] = { "flatpak", "run", "org.gimp.GIMP", NULL };
|
|
static const char *handnote[] = { "flatpak", "run", "com.github.xournalpp.xournalpp", NULL };
|
|
|
|
/* Keybindings */
|
|
static Keychord *keychords[] = {
|
|
/* Keys function argument */
|
|
/* Terminal */
|
|
&((Keychord){1, {{MODKEY, XK_Return}}, spawn, {.v = termcmd } }), /* Launch terminal */
|
|
|
|
/* dmenu */
|
|
&((Keychord){2, {{MODKEY, XK_p}, {0, XK_r}}, spawn, {.v = dmenucmd } }), /* Launch application launcher menu */
|
|
&((Keychord){2, {{MODKEY, XK_p}, {0, XK_d}}, spawn, SHCMD("$HOME/.config/suckless/dmenu/scripts/dmenu_drun") }), /* Launch application launcher menu (desktop files) */
|
|
&((Keychord){2, {{MODKEY, XK_p}, {0, XK_i}}, spawn, SHCMD("$HOME/.config/suckless/dmenu/scripts/dmenu_wifi") }), /* Launch wifi configuration menu */
|
|
&((Keychord){2, {{MODKEY, XK_p}, {0, XK_s}}, spawn, SHCMD("$HOME/.config/suckless/dmenu/scripts/dmenu_scrot") }), /* Launch screenshot/screencast menu */
|
|
&((Keychord){2, {{MODKEY, XK_p}, {0, XK_w}}, spawn, SHCMD("$HOME/.config/suckless/dmenu/scripts/dmenu_wall") }), /* Launch wallpaper configuration menu */
|
|
&((Keychord){2, {{MODKEY, XK_p}, {0, XK_e}}, spawn, SHCMD("$HOME/.config/suckless/dmenu/scripts/dmenu_edit") }), /* Launch open-in-editor menu */
|
|
&((Keychord){2, {{MODKEY, XK_p}, {0, XK_b}}, spawn, SHCMD("$HOME/.config/suckless/dmenu/scripts/dmenu_blue") }), /* Launch bluetooth configuration menu */
|
|
&((Keychord){2, {{MODKEY, XK_p}, {0, XK_q}}, spawn, SHCMD("$HOME/.config/suckless/dmenu/scripts/dmenu_power") }), /* Launch power menu */
|
|
|
|
/* Apps */
|
|
&((Keychord){2, {{MODKEY, XK_a}, {0, XK_e}}, spawn, {.v = editor } }), /* Launch text editor (tag 1) */
|
|
&((Keychord){2, {{MODKEY, XK_a}, {0, XK_v}}, spawn, {.v = vm } }), /* Launch vm manager (tag 2) */
|
|
&((Keychord){2, {{MODKEY, XK_a}, {0, XK_w}}, spawn, {.v = browser } }), /* Launch web browser (tag 3) */
|
|
&((Keychord){2, {{MODKEY, XK_a}, {0, XK_c}}, spawn, {.v = chat } }), /* Launch chat app (tag 4) */
|
|
&((Keychord){2, {{MODKEY, XK_a}, {0, XK_o}}, spawn, {.v = office } }), /* Launch office suite (tag 8) */
|
|
&((Keychord){2, {{MODKEY, XK_a}, {0, XK_k}}, spawn, {.v = videoeditor } }), /* Launch video editor (tag 6) */
|
|
&((Keychord){2, {{MODKEY, XK_a}, {0, XK_i}}, spawn, {.v = imgeditor } }), /* Launch image editor (tag 7) */
|
|
&((Keychord){2, {{MODKEY, XK_a}, {0, XK_x}}, spawn, {.v = handnote } }), /* Launch hand written notes app (tag 7) */
|
|
|
|
/* Keyboard Layouts */
|
|
&((Keychord){2, {{MODKEY, XK_x}, {0, XK_e}}, spawn, SHCMD("setxkbmap -layout es && pkill -RTMIN+10 dwmblocks") }), /* Switch to Spanish keyboard layout */
|
|
&((Keychord){2, {{MODKEY, XK_x}, {0, XK_u}}, spawn, SHCMD("setxkbmap -layout us && pkill -RTMIN+10 dwmblocks") }), /* Switch to US keyboard layout */
|
|
|
|
/* Audio Control */
|
|
&((Keychord){1, {{0, XF86XK_AudioRaiseVolume}}, spawn, SHCMD("pamixer -i 5 && pkill -RTMIN+10 dwmblocks") }), /* Increase volume by 5%+ */
|
|
&((Keychord){1, {{0, XF86XK_AudioLowerVolume}}, spawn, SHCMD("pamixer -d 5 && pkill -RTMIN+10 dwmblocks") }), /* Decrease volume by 5%- */
|
|
&((Keychord){1, {{0, XF86XK_AudioMute}}, spawn, SHCMD("pamixer -t && pkill -RTMIN+10 dwmblocks") }), /* Toggle mute */
|
|
&((Keychord){1, {{0, XF86XK_AudioMicMute}}, spawn, SHCMD("pamixer --default-source -t && pkill -RTMIN+10 dwmblocks") }), /* Toggle mic mute */
|
|
|
|
/* Brightness Control */
|
|
&((Keychord){1, {{0, XF86XK_MonBrightnessUp}}, spawn, SHCMD("brightnessctl s 5%+ && pkill -RTMIN+10 dwmblocks") }), /* Increase brightness by 5%+ */
|
|
&((Keychord){1, {{0, XF86XK_MonBrightnessDown}}, spawn, SHCMD("brightnessctl s 5%- && pkill -RTMIN+10 dwmblocks") }), /* Decrease brightness by 5%- *,
|
|
|
|
/* Display Control */
|
|
&((Keychord){1, {{0, XF86XK_Display}}, spawn, SHCMD("arandr") }), /* Launch display configuration tool */
|
|
|
|
/* Media Control */
|
|
&((Keychord){1, {{0, XF86XK_AudioPause}}, spawn, SHCMD("playerctl play-pause") }), /* Pause playback */
|
|
&((Keychord){1, {{0, XF86XK_AudioPlay}}, spawn, SHCMD("playerctl play-pause") }), /* Also pause playback */
|
|
&((Keychord){1, {{0, XF86XK_AudioNext}}, spawn, SHCMD("playerctl next") }), /* Next song/media */
|
|
&((Keychord){1, {{0, XF86XK_AudioPrev}}, spawn, SHCMD("playerctl previous") }), /* Previous song/media */
|
|
&((Keychord){1, {{0, XF86XK_AudioStop}}, spawn, SHCMD("playerctl stop") }), /* Stop playback */
|
|
|
|
/* RSS Feed */
|
|
&((Keychord){1, {{0, XF86XK_News}}, spawn, SHCMD("st -n newsboat -c newsboat -e newsboat") }), /* Launch RSS feed reader with media key */
|
|
|
|
/* Window Management */
|
|
&((Keychord){1, {{MODKEY, XK_j}}, focusstack, {.i = +1 } }), /* Focus next window in the stack */
|
|
&((Keychord){1, {{MODKEY, XK_k}}, focusstack, {.i = -1 } }), /* Focus previous window in the stack */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_j}}, movestack, {.i = -1 } }), /* Move window to next position in the stack */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_k}}, movestack, {.i = +1 } }), /* Move window to previous position in the stack */
|
|
&((Keychord){1, {{MODKEY, XK_i}}, incnmaster, {.i = +1 } }), /* Increase master area window count */
|
|
&((Keychord){1, {{MODKEY, XK_d}}, incnmaster, {.i = -1 } }), /* Decrease master area window count */
|
|
&((Keychord){1, {{MODKEY, XK_h}}, setmfact, {.f = -0.05} }), /* Decrease master area size */
|
|
&((Keychord){1, {{MODKEY, XK_l}}, setmfact, {.f = +0.05} }), /* Increase master area size */
|
|
&((Keychord){1, {{MODKEY|ControlMask, XK_Return}}, zoom, {0} }), /* Move window to master area */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_Return}}, focusmaster, {0} }), /* Focus master area */
|
|
&((Keychord){1, {{MODKEY|Mod1Mask, XK_Return}}, togglemaster, {0} }), /* Toggle master area position (depends in the layout) */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_Tab}}, togglesticky, {0} }), /* Toggle sticky on active window (show on all tags) */
|
|
&((Keychord){1, {{MODKEY, XK_Tab}}, view, {0} }), /* Focus last active tag */
|
|
&((Keychord){1, {{MODKEY, XK_q}}, killclient, {0} }), /* Kill active window */
|
|
&((Keychord){2, {{MODKEY, XK_c}, {0, XK_t}}, setlayout, {.v = &layouts[0]} }), /* Switch to master-stack layout */
|
|
&((Keychord){2, {{MODKEY, XK_c}, {0, XK_f}}, setlayout, {.v = &layouts[1]} }), /* Switch to floating layout */
|
|
&((Keychord){2, {{MODKEY, XK_c}, {0, XK_m}}, setlayout, {.v = &layouts[2]} }), /* Switch to monocle layout */
|
|
&((Keychord){2, {{MODKEY, XK_c}, {0, XK_c}}, setlayout, {.v = &layouts[3]} }), /* Switch to centerd master layout */
|
|
&((Keychord){2, {{MODKEY, XK_c}, {0, XK_v}}, setlayout, {.v = &layouts[4]} }), /* Switch to floating centered master layout */
|
|
&((Keychord){2, {{MODKEY, XK_c}, {0, XK_d}}, setlayout, {.v = &layouts[5]} }), /* Switch to dwindle layout */
|
|
&((Keychord){2, {{MODKEY, XK_c}, {0, XK_s}}, setlayout, {.v = &layouts[6]} }), /* Switch to spiral layout */
|
|
&((Keychord){2, {{MODKEY, XK_c}, {0, XK_g}}, setlayout, {.v = &layouts[7]} }), /* Switch to grid layout */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_space}}, setlayout, {0} }), /* Switch to last used layout */
|
|
&((Keychord){1, {{MODKEY, XK_space}}, cyclelayout, {.i = -1 } }), /* Switch to next layout */
|
|
&((Keychord){1, {{MODKEY|ControlMask, XK_space}}, cyclelayout, {.i = +1 } }), /* Switch to previous layout */
|
|
&((Keychord){1, {{MODKEY, XK_f}}, fullscreen, {0} }), /* Toggle fullscreen mode on active window */
|
|
&((Keychord){1, {{MODKEY|Mod1Mask, XK_space}}, togglefloating, {0} }), /* Toggle floating mode on active window */
|
|
&((Keychord){1, {{MODKEY, XK_0}}, view, {.ui = ~0 } }), /* View all windows from all tags */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_0}}, tag, {.ui = ~0 } }), /* View active window on all tags (similar to sticky, more nuclear) */
|
|
&((Keychord){1, {{MODKEY, XK_comma}}, focusmon, {.i = -1 } }), /* Focus next screen */
|
|
&((Keychord){1, {{MODKEY, XK_period}}, focusmon, {.i = +1 } }), /* Focus previous screen */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_comma}}, tagmon, {.i = -1 } }), /* Move active window to next screen */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_period}}, tagmon, {.i = +1 } }), /* Move active window to previous screen */
|
|
&((Keychord){1, {{MODKEY, XK_b}}, togglebar, {0} }), /* Toggle bar */
|
|
|
|
/* Scratchpads */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_Return}}, togglescratch, {.ui = 0 } }), /* Toggle scratch terminal */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_b}}, togglescratch, {.ui = 1 } }), /* Toggle system monitor scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_p}}, togglescratch, {.ui = 2 } }), /* Toggle audio mixer scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_f}}, togglescratch, {.ui = 3 } }), /* Toggle flix-cli scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_a}}, togglescratch, {.ui = 4 } }), /* Toggle ani-cli scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_y}}, togglescratch, {.ui = 5 } }), /* Toggle ytfzf scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_n}}, togglescratch, {.ui = 6 } }), /* Toggle ytfzf (music) scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_m}}, togglescratch, {.ui = 7 } }), /* Toggle musikcube scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_v}}, togglescratch, {.ui = 8 } }), /* Toggle yazi scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_r}}, togglescratch, {.ui = 9 } }), /* Toggle newsboat scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_t}}, togglescratch, {.ui = 10 } }), /* Toggle tut scratchpad */
|
|
&((Keychord){2, {{MODKEY, XK_s}, {0, XK_k}}, togglescratch, {.ui = 11 } }), /* Toggle Bitwarden scratchpad */
|
|
|
|
/* Session Management */
|
|
&((Keychord){1, {{MODKEY|ControlMask|ShiftMask, XK_q}}, quit, {0} }),
|
|
&((Keychord){1, {{MODKEY|ControlMask, XK_r}}, quit, {1} }),
|
|
|
|
/* Tag Keys */
|
|
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)
|
|
&((Keychord){1, {{MODKEY, XK_Right}}, viewnext, {0} }), /* Switch to next tag */
|
|
&((Keychord){1, {{MODKEY, XK_Left}}, viewprev, {0} }), /* Switch to previous tag */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_Right}}, tagtonext, {0} }), /* Move active window to next tag */
|
|
&((Keychord){1, {{MODKEY|ShiftMask, XK_Left}}, tagtoprev, {0} }), /* Move active window to previous tag */
|
|
};
|
|
|
|
/* Mouse scroll resize */
|
|
static const int scrollsensetivity = 30; /* 1 means resize window by 1 pixel for each scroll event */
|
|
|
|
/* Resizemousescroll direction argument list */
|
|
static const int scrollargs[][2] = {
|
|
/* width change height change */
|
|
{ +scrollsensetivity, 0 },
|
|
{ -scrollsensetivity, 0 },
|
|
{ 0, +scrollsensetivity },
|
|
{ 0, -scrollsensetivity },
|
|
};
|
|
|
|
/* Mouse Bindings */
|
|
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
|
|
static const 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, togglefloating, {0} },
|
|
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
|
|
{ ClkClientWin, MODKEY, Button4, resizemousescroll, {.v = &scrollargs[0]} },
|
|
{ ClkClientWin, MODKEY, Button5, resizemousescroll, {.v = &scrollargs[1]} },
|
|
{ ClkClientWin, MODKEY, Button6, resizemousescroll, {.v = &scrollargs[2]} },
|
|
{ ClkClientWin, MODKEY, Button7, resizemousescroll, {.v = &scrollargs[3]} },
|
|
{ ClkTagBar, 0, Button1, view, {0} },
|
|
{ ClkTagBar, 0, Button3, toggleview, {0} },
|
|
{ ClkTagBar, MODKEY, Button1, tag, {0} },
|
|
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
|
|
};
|
|
|
|
|