mirror of
https://github.com/eRgo35/dwm.git
synced 2025-12-15 05:16:11 +01:00
2227 lines
88 KiB
C
2227 lines
88 KiB
C
/* See LICENSE file for copyright and license details. */
|
|
|
|
#include <X11/XF86keysym.h>
|
|
|
|
/* Helper macros for spawning commands */
|
|
#define SHCMD(cmd) \
|
|
{ \
|
|
.v = (const char *[]) { "/bin/sh", "-c", cmd, NULL } \
|
|
}
|
|
#define CMD(...) \
|
|
{ \
|
|
.v = (const char *[]) { __VA_ARGS__, NULL } \
|
|
}
|
|
|
|
/* appearance */
|
|
#if ROUNDED_CORNERS_PATCH
|
|
static const unsigned int borderpx = 0; /* border pixel of windows */
|
|
static const int corner_radius = 10;
|
|
#else
|
|
static const unsigned int borderpx = 1; /* border pixel of windows */
|
|
#endif // ROUNDED_CORNERS_PATCH
|
|
#if BAR_BORDER_PATCH
|
|
/* This allows the bar border size to be explicitly set separately from
|
|
* borderpx. If left as 0 then it will default to the borderpx value of the
|
|
* monitor and will automatically update with setborderpx. */
|
|
static const unsigned int barborderpx = 0; /* border pixel of bar */
|
|
#endif // BAR_BORDER_PATCH
|
|
static const unsigned int snap = 28; /* snap pixel */
|
|
#if SWALLOW_PATCH
|
|
static const int swallowfloating =
|
|
0; /* 1 means swallow floating windows by default */
|
|
#endif // SWALLOW_PATCH
|
|
#if BAR_TAGPREVIEW_PATCH
|
|
static const int scalepreview = 4; /* Tag preview scaling */
|
|
#endif // BAR_TAGPREVIEW_PATCH
|
|
#if NO_MOD_BUTTONS_PATCH
|
|
static int nomodbuttons =
|
|
1; /* allow client mouse button bindings that have no modifier */
|
|
#endif // NO_MOD_BUTTONS_PATCH
|
|
#if VANITYGAPS_PATCH
|
|
static const unsigned int gappih = 20; /* horiz inner gap between windows */
|
|
static const unsigned int gappiv = 10; /* vert inner gap between windows */
|
|
static const unsigned int gappoh =
|
|
10; /* horiz outer gap between windows and screen edge */
|
|
static const unsigned int gappov =
|
|
30; /* vert outer gap between windows and screen edge */
|
|
static const int smartgaps_fact =
|
|
1; /* gap factor when there is only one client; 0 = no gaps, 3 = 3x outer
|
|
gaps */
|
|
#endif // VANITYGAPS_PATCH
|
|
#if AUTOSTART_PATCH
|
|
static const char autostartblocksh[] = "autostart_blocking.sh";
|
|
static const char autostartsh[] = "autostart.sh";
|
|
static const char dwmdir[] = "dwm";
|
|
static const char localshare[] = ".local/share";
|
|
#endif // AUTOSTART_PATCH
|
|
#if BAR_ANYBAR_PATCH
|
|
static const int usealtbar = 1; /* 1 means use non-dwm status bar */
|
|
static const char *altbarclass = "Polybar"; /* Alternate bar class name */
|
|
static const char *altbarcmd =
|
|
"$HOME/bar.sh"; /* Alternate bar launch command */
|
|
#endif // BAR_ANYBAR_PATCH
|
|
#if BAR_HOLDBAR_PATCH
|
|
static const int showbar = 0; /* 0 means no bar */
|
|
#else
|
|
static const int showbar = 1; /* 0 means no bar */
|
|
#endif // BAR_HOLDBAR_PATCH
|
|
static const int topbar = 1; /* 0 means bottom bar */
|
|
#if TAB_PATCH
|
|
/* Display modes of the tab bar: never shown, always shown, shown only in */
|
|
/* monocle mode in the presence of several windows. */
|
|
/* Modes after showtab_nmodes are disabled. */
|
|
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 toptab = False; /* False means bottom tab bar */
|
|
#endif // TAB_PATCH
|
|
#if BAR_HEIGHT_PATCH
|
|
static const int bar_height =
|
|
32; /* 0 means derive from font, >= 1 explicit height */
|
|
#endif // BAR_HEIGHT_PATCH
|
|
#if BAR_PADDING_PATCH
|
|
static const int vertpad = 10; /* vertical padding of bar */
|
|
static const int sidepad = 10; /* horizontal padding of bar */
|
|
#endif // BAR_PADDING_PATCH
|
|
#if BAR_WINICON_PATCH
|
|
#define ICONSIZE 20 /* icon size */
|
|
#define ICONSPACING 5 /* space between icon and title */
|
|
#endif // BAR_WINICON_PATCH
|
|
#if FOCUSONCLICK_PATCH
|
|
static const int focusonwheel = 0;
|
|
#endif // FOCUSONCLICK_PATCH
|
|
#if FLOATPOS_PATCH
|
|
static int floatposgrid_x = 5; /* float grid columns */
|
|
static int floatposgrid_y = 5; /* float grid rows */
|
|
#endif // FLOATPOS_PATCH
|
|
#if RIODRAW_PATCH
|
|
static const char slopspawnstyle[] =
|
|
"-t 0 -c 0.92,0.85,0.69,0.3 -o"; /* do NOT define -f (format) here */
|
|
static const char slopresizestyle[] =
|
|
"-t 0 -c 0.92,0.85,0.69,0.3"; /* do NOT define -f (format) here */
|
|
static const int riodraw_borders =
|
|
0; /* 0 or 1, indicates whether the area drawn using slop includes the
|
|
window borders */
|
|
#if SWALLOW_PATCH
|
|
static const int riodraw_matchpid =
|
|
1; /* 0 or 1, indicates whether to match the PID of the client that was
|
|
spawned with riospawn */
|
|
#endif // SWALLOW_PATCH
|
|
#endif // RIODRAW_PATCH
|
|
/* Status is to be shown on: -1 (all monitors), 0 (a specific monitor by index),
|
|
* 'A' (active monitor) */
|
|
#if BAR_STATUSALLMONS_PATCH
|
|
static const int statusmon = -1;
|
|
#elif BAR_STATICSTATUS_PATCH
|
|
static const int statusmon = 0;
|
|
#else
|
|
static const int statusmon = 'A';
|
|
#endif // BAR_STATUSALLMONS_PATCH | BAR_STATICSTATUS_PATCH
|
|
#if BAR_STATUSPADDING_PATCH
|
|
static const int horizpadbar = 2; /* horizontal padding for statusbar */
|
|
static const int vertpadbar = 0; /* vertical padding for statusbar */
|
|
#endif // BAR_STATUSPADDING_PATCH
|
|
#if BAR_STATUSBUTTON_PATCH
|
|
static const char buttonbar[] = "";
|
|
#endif // BAR_STATUSBUTTON_PATCH
|
|
#if BAR_SYSTRAY_PATCH
|
|
static const unsigned int systrayspacing = 2; /* systray spacing */
|
|
static const int showsystray = 1; /* 0 means no systray */
|
|
#endif // BAR_SYSTRAY_PATCH
|
|
#if BAR_TAGLABELS_PATCH
|
|
static const char ptagf[] = "[%s %s]"; /* format of a tag label */
|
|
static const char etagf[] = "[%s]"; /* format of an empty tag */
|
|
static const int lcaselbl = 0; /* 1 means make tag label lowercase */
|
|
#endif // BAR_TAGLABELS_PATCH
|
|
#if BAR_UNDERLINETAGS_PATCH
|
|
static const unsigned int ulinepad =
|
|
5; /* horizontal padding between the underline and tag */
|
|
static const unsigned int ulinestroke =
|
|
4; /* thickness / height of the underline */
|
|
static const unsigned int ulinevoffset =
|
|
0; /* how far above the bottom of the bar the line should appear */
|
|
static const int ulineall =
|
|
0; /* 1 to show underline on all tags, 0 for just the active ones */
|
|
#endif // BAR_UNDERLINETAGS_PATCH
|
|
|
|
#if NAMETAG_PATCH
|
|
#if NAMETAG_PREPEND_PATCH
|
|
/* The format in which the tag is written when named. E.g. %d: %.12s will write
|
|
* the tag number followed the first 12 characters of the given string. You can
|
|
* also just use "%d: %s" here. */
|
|
#define NAMETAG_FORMAT "%d: %.12s"
|
|
#else
|
|
#define NAMETAG_FORMAT "%s"
|
|
#endif // NAMETAG_PREPEND_PATCH
|
|
/* The maximum amount of bytes reserved for each tag text. */
|
|
#define MAX_TAGLEN 16
|
|
/* The command to run (via popen). This can be tailored by adding a prompt,
|
|
* passing other command line arguments or providing name options. Optionally
|
|
* you can use other dmenu like alternatives like rofi -dmenu. */
|
|
#define NAMETAG_COMMAND "dmenu < /dev/null"
|
|
#endif // NAMETAG_PATCH
|
|
|
|
#if ALT_TAB_PATCH
|
|
/* alt-tab configuration */
|
|
static const unsigned int tabmodkey =
|
|
0x40; /* (Alt) when this key is held down the alt-tab functionality stays
|
|
active. Must be the same modifier as used to run alttabstart */
|
|
static const unsigned int tabcyclekey =
|
|
0x17; /* (Tab) when this key is hit the menu moves one position forward in
|
|
client stack. Must be the same key as used to run alttabstart */
|
|
static const unsigned int tabposy =
|
|
1; /* tab position on Y axis, 0 = top, 1 = center, 2 = bottom */
|
|
static const unsigned int tabposx =
|
|
1; /* tab position on X axis, 0 = left, 1 = center, 2 = right */
|
|
static const unsigned int maxwtab = 600; /* tab menu width */
|
|
static const unsigned int maxhtab = 200; /* tab menu height */
|
|
#endif // ALT_TAB_PATCH
|
|
|
|
/* Indicators: see patch/bar_indicators.h for options */
|
|
static int tagindicatortype = INDICATOR_TOP_LEFT_SQUARE;
|
|
static int tiledindicatortype = INDICATOR_NONE;
|
|
static int floatindicatortype = INDICATOR_TOP_LEFT_SQUARE;
|
|
#if FAKEFULLSCREEN_CLIENT_PATCH && !FAKEFULLSCREEN_PATCH
|
|
static int fakefsindicatortype = INDICATOR_PLUS;
|
|
static int floatfakefsindicatortype = INDICATOR_PLUS_AND_LARGER_SQUARE;
|
|
#endif // FAKEFULLSCREEN_CLIENT_PATCH
|
|
#if ONLYQUITONEMPTY_PATCH
|
|
static const int quit_empty_window_count =
|
|
0; /* only allow dwm to quit if no (<= count) windows are open */
|
|
#endif // ONLYQUITONEMPTY_PATCH
|
|
#if BAR_EXTRASTATUS_PATCH
|
|
static const char statussep = ';'; /* separator between status bars */
|
|
#endif // BAR_EXTRASTATUS_PATCH
|
|
#if BAR_TABGROUPS_PATCH
|
|
#if MONOCLE_LAYOUT
|
|
static void (*bartabmonfns[])(Monitor *) = {monocle /* , customlayoutfn */};
|
|
#else
|
|
static void (*bartabmonfns[])(Monitor *) = {NULL /* , customlayoutfn */};
|
|
#endif // MONOCLE_LAYOUT
|
|
#endif // BAR_TABGROUPS_PATCH
|
|
#if BAR_PANGO_PATCH
|
|
static const char font[] = "monospace 11";
|
|
#else
|
|
static const char *fonts[] = {"JetBrainsMono Nerd Font:size=11:antialias=true",
|
|
"Roboto:size=11:antialias=true",
|
|
"monospace:size=13:antialias=true"};
|
|
#endif // BAR_PANGO_PATCH
|
|
static const char dmenufont[] =
|
|
"JetBrainsMono Nerd Font:size=11:antialias=true";
|
|
|
|
#define BASE "#191724"
|
|
#define SURFACE "#1f1d2e"
|
|
#define OVERLAY "#26233a"
|
|
|
|
#define MUTED "#6e6a86"
|
|
#define SUBTLE "#908caa"
|
|
#define TEXT "#e0def4"
|
|
|
|
#define LOVE "#eb6f92"
|
|
#define GOLD "#f6c177"
|
|
#define ROSE "#ebbcba"
|
|
#define PINE "#31748f"
|
|
#define FOAM "#9ccfd8"
|
|
#define IRIS "#c4a7e7"
|
|
|
|
#define HIGHLIGHT_LOW "#21202e"
|
|
#define HIGHLIGHT_MED "#403d52"
|
|
#define HIGHLIGHT_HIGH "#524f67"
|
|
|
|
static char c000000[] = "#000000"; // placeholder value
|
|
|
|
static char normfgcolor[] = TEXT;
|
|
static char normbgcolor[] = SURFACE;
|
|
static char normbordercolor[] = OVERLAY;
|
|
static char normfloatcolor[] = HIGHLIGHT_MED;
|
|
|
|
static char selfgcolor[] = TEXT;
|
|
static char selbgcolor[] = PINE;
|
|
static char selbordercolor[] = PINE;
|
|
static char selfloatcolor[] = PINE;
|
|
|
|
static char titlenormfgcolor[] = SUBTLE;
|
|
static char titlenormbgcolor[] = SURFACE;
|
|
static char titlenormbordercolor[] = OVERLAY;
|
|
static char titlenormfloatcolor[] = ROSE;
|
|
|
|
static char titleselfgcolor[] = TEXT;
|
|
static char titleselbgcolor[] = PINE;
|
|
static char titleselbordercolor[] = PINE;
|
|
static char titleselfloatcolor[] = PINE;
|
|
|
|
static char tagsnormfgcolor[] = MUTED;
|
|
static char tagsnormbgcolor[] = BASE;
|
|
static char tagsnormbordercolor[] = OVERLAY;
|
|
static char tagsnormfloatcolor[] = ROSE;
|
|
|
|
static char tagsselfgcolor[] = TEXT;
|
|
static char tagsselbgcolor[] = PINE;
|
|
static char tagsselbordercolor[] = PINE;
|
|
static char tagsselfloatcolor[] = PINE;
|
|
|
|
static char hidnormfgcolor[] = MUTED;
|
|
static char hidselfgcolor[] = SUBTLE;
|
|
static char hidnormbgcolor[] = BASE;
|
|
static char hidselbgcolor[] = BASE;
|
|
|
|
static char urgfgcolor[] = TEXT;
|
|
static char urgbgcolor[] = LOVE;
|
|
static char urgbordercolor[] = LOVE;
|
|
static char urgfloatcolor[] = ROSE;
|
|
|
|
#if RENAMED_SCRATCHPADS_PATCH
|
|
static char scratchselfgcolor[] = TEXT;
|
|
static char scratchselbgcolor[] = IRIS;
|
|
static char scratchselbordercolor[] = IRIS;
|
|
static char scratchselfloatcolor[] = IRIS;
|
|
|
|
static char scratchnormfgcolor[] = SUBTLE;
|
|
static char scratchnormbgcolor[] = HIGHLIGHT_LOW;
|
|
static char scratchnormbordercolor[] = OVERLAY;
|
|
static char scratchnormfloatcolor[] = OVERLAY;
|
|
#endif // RENAMED_SCRATCHPADS_PATCH
|
|
|
|
#if BAR_FLEXWINTITLE_PATCH
|
|
static char normTTBbgcolor[] = "#330000";
|
|
static char normLTRbgcolor[] = "#330033";
|
|
static char normMONObgcolor[] = "#000033";
|
|
static char normGRIDbgcolor[] = "#003300";
|
|
static char normGRD1bgcolor[] = "#003300";
|
|
static char normGRD2bgcolor[] = "#003300";
|
|
static char normGRDMbgcolor[] = "#506600";
|
|
static char normHGRDbgcolor[] = "#b96600";
|
|
static char normDWDLbgcolor[] = "#003333";
|
|
static char normSPRLbgcolor[] = "#333300";
|
|
static char normfloatbgcolor[] = "#115577";
|
|
static char actTTBbgcolor[] = "#440000";
|
|
static char actLTRbgcolor[] = "#440044";
|
|
static char actMONObgcolor[] = "#000044";
|
|
static char actGRIDbgcolor[] = "#004400";
|
|
static char actGRD1bgcolor[] = "#004400";
|
|
static char actGRD2bgcolor[] = "#004400";
|
|
static char actGRDMbgcolor[] = "#507711";
|
|
static char actHGRDbgcolor[] = "#b97711";
|
|
static char actDWDLbgcolor[] = "#004444";
|
|
static char actSPRLbgcolor[] = "#444400";
|
|
static char actfloatbgcolor[] = "#116688";
|
|
static char selTTBbgcolor[] = "#550000";
|
|
static char selLTRbgcolor[] = "#550055";
|
|
static char selMONObgcolor[] = "#212171";
|
|
static char selGRIDbgcolor[] = "#005500";
|
|
static char selGRD1bgcolor[] = "#005500";
|
|
static char selGRD2bgcolor[] = "#005500";
|
|
static char selGRDMbgcolor[] = "#508822";
|
|
static char selHGRDbgcolor[] = "#b98822";
|
|
static char selDWDLbgcolor[] = "#005555";
|
|
static char selSPRLbgcolor[] = "#555500";
|
|
static char selfloatbgcolor[] = "#117799";
|
|
#endif // BAR_FLEXWINTITLE_PATCH
|
|
|
|
#if BAR_ALPHA_PATCH
|
|
static const unsigned int baralpha = 0xd0;
|
|
static const unsigned int borderalpha = OPAQUE;
|
|
static const unsigned int alphas[][3] = {
|
|
/* fg bg border */
|
|
[SchemeNorm] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeSel] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeTitleNorm] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeTitleSel] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeTagsNorm] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeTagsSel] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeHidNorm] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeHidSel] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeUrg] = {OPAQUE, baralpha, borderalpha},
|
|
#if RENAMED_SCRATCHPADS_PATCH
|
|
[SchemeScratchSel] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeScratchNorm] = {OPAQUE, baralpha, borderalpha},
|
|
#endif // RENAMED_SCRATCHPADS_PATCH
|
|
#if BAR_FLEXWINTITLE_PATCH
|
|
[SchemeFlexActTTB] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActLTR] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActMONO] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActGRID] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActGRD1] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActGRD2] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActGRDM] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActHGRD] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActDWDL] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActSPRL] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexActFloat] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaTTB] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaLTR] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaMONO] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaGRID] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaGRD1] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaGRD2] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaGRDM] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaHGRD] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaDWDL] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaSPRL] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexInaFloat] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelTTB] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelLTR] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelMONO] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelGRID] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelGRD1] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelGRD2] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelGRDM] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelHGRD] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelDWDL] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelSPRL] = {OPAQUE, baralpha, borderalpha},
|
|
[SchemeFlexSelFloat] = {OPAQUE, baralpha, borderalpha},
|
|
#endif // BAR_FLEXWINTITLE_PATCH
|
|
};
|
|
#endif // BAR_ALPHA_PATCH
|
|
#if BAR_VTCOLORS_PATCH
|
|
static const char title_bg_dark[] = "#303030";
|
|
static const char title_bg_light[] = "#fdfdfd";
|
|
static const int color_ptrs[][ColCount] = {
|
|
/* fg bg border float */
|
|
[SchemeNorm] = {-1, -1, 5, 12},
|
|
[SchemeSel] = {-1, -1, 11, 13},
|
|
[SchemeTitleNorm] = {6, -1, -1, -1},
|
|
[SchemeTitleSel] = {6, -1, -1, -1},
|
|
[SchemeTagsNorm] = {2, 0, 0, -1},
|
|
[SchemeTagsSel] = {6, 5, 5, -1},
|
|
[SchemeHidNorm] = {5, 0, 0, -1},
|
|
[SchemeHidSel] = {6, -1, -1, -1},
|
|
[SchemeUrg] = {7, 9, 9, 15},
|
|
};
|
|
#endif // BAR_VTCOLORS_PATCH
|
|
|
|
static char *colors[][ColCount] = {
|
|
/* fg bg border float */
|
|
[SchemeNorm] = {normfgcolor, normbgcolor, normbordercolor, normfloatcolor},
|
|
[SchemeSel] = {selfgcolor, selbgcolor, selbordercolor, selfloatcolor},
|
|
[SchemeTitleNorm] = {titlenormfgcolor, titlenormbgcolor,
|
|
titlenormbordercolor, titlenormfloatcolor},
|
|
[SchemeTitleSel] = {titleselfgcolor, titleselbgcolor, titleselbordercolor,
|
|
titleselfloatcolor},
|
|
[SchemeTagsNorm] = {tagsnormfgcolor, tagsnormbgcolor, tagsnormbordercolor,
|
|
tagsnormfloatcolor},
|
|
[SchemeTagsSel] = {tagsselfgcolor, tagsselbgcolor, tagsselbordercolor,
|
|
tagsselfloatcolor},
|
|
[SchemeHidNorm] = {hidnormfgcolor, hidnormbgcolor, c000000, c000000},
|
|
[SchemeHidSel] = {hidselfgcolor, hidselbgcolor, c000000, c000000},
|
|
[SchemeUrg] = {urgfgcolor, urgbgcolor, urgbordercolor, urgfloatcolor},
|
|
#if RENAMED_SCRATCHPADS_PATCH
|
|
[SchemeScratchSel] = {scratchselfgcolor, scratchselbgcolor,
|
|
scratchselbordercolor, scratchselfloatcolor},
|
|
[SchemeScratchNorm] = {scratchnormfgcolor, scratchnormbgcolor,
|
|
scratchnormbordercolor, scratchnormfloatcolor},
|
|
#endif // RENAMED_SCRATCHPADS_PATCH
|
|
#if BAR_FLEXWINTITLE_PATCH
|
|
[SchemeFlexActTTB] = {titleselfgcolor, actTTBbgcolor, actTTBbgcolor,
|
|
c000000},
|
|
[SchemeFlexActLTR] = {titleselfgcolor, actLTRbgcolor, actLTRbgcolor,
|
|
c000000},
|
|
[SchemeFlexActMONO] = {titleselfgcolor, actMONObgcolor, actMONObgcolor,
|
|
c000000},
|
|
[SchemeFlexActGRID] = {titleselfgcolor, actGRIDbgcolor, actGRIDbgcolor,
|
|
c000000},
|
|
[SchemeFlexActGRD1] = {titleselfgcolor, actGRD1bgcolor, actGRD1bgcolor,
|
|
c000000},
|
|
[SchemeFlexActGRD2] = {titleselfgcolor, actGRD2bgcolor, actGRD2bgcolor,
|
|
c000000},
|
|
[SchemeFlexActGRDM] = {titleselfgcolor, actGRDMbgcolor, actGRDMbgcolor,
|
|
c000000},
|
|
[SchemeFlexActHGRD] = {titleselfgcolor, actHGRDbgcolor, actHGRDbgcolor,
|
|
c000000},
|
|
[SchemeFlexActDWDL] = {titleselfgcolor, actDWDLbgcolor, actDWDLbgcolor,
|
|
c000000},
|
|
[SchemeFlexActSPRL] = {titleselfgcolor, actSPRLbgcolor, actSPRLbgcolor,
|
|
c000000},
|
|
[SchemeFlexActFloat] = {titleselfgcolor, actfloatbgcolor, actfloatbgcolor,
|
|
c000000},
|
|
[SchemeFlexInaTTB] = {titlenormfgcolor, normTTBbgcolor, normTTBbgcolor,
|
|
c000000},
|
|
[SchemeFlexInaLTR] = {titlenormfgcolor, normLTRbgcolor, normLTRbgcolor,
|
|
c000000},
|
|
[SchemeFlexInaMONO] = {titlenormfgcolor, normMONObgcolor, normMONObgcolor,
|
|
c000000},
|
|
[SchemeFlexInaGRID] = {titlenormfgcolor, normGRIDbgcolor, normGRIDbgcolor,
|
|
c000000},
|
|
[SchemeFlexInaGRD1] = {titlenormfgcolor, normGRD1bgcolor, normGRD1bgcolor,
|
|
c000000},
|
|
[SchemeFlexInaGRD2] = {titlenormfgcolor, normGRD2bgcolor, normGRD2bgcolor,
|
|
c000000},
|
|
[SchemeFlexInaGRDM] = {titlenormfgcolor, normGRDMbgcolor, normGRDMbgcolor,
|
|
c000000},
|
|
[SchemeFlexInaHGRD] = {titlenormfgcolor, normHGRDbgcolor, normHGRDbgcolor,
|
|
c000000},
|
|
[SchemeFlexInaDWDL] = {titlenormfgcolor, normDWDLbgcolor, normDWDLbgcolor,
|
|
c000000},
|
|
[SchemeFlexInaSPRL] = {titlenormfgcolor, normSPRLbgcolor, normSPRLbgcolor,
|
|
c000000},
|
|
[SchemeFlexInaFloat] = {titlenormfgcolor, normfloatbgcolor,
|
|
normfloatbgcolor, c000000},
|
|
[SchemeFlexSelTTB] = {titleselfgcolor, selTTBbgcolor, selTTBbgcolor,
|
|
c000000},
|
|
[SchemeFlexSelLTR] = {titleselfgcolor, selLTRbgcolor, selLTRbgcolor,
|
|
c000000},
|
|
[SchemeFlexSelMONO] = {titleselfgcolor, selMONObgcolor, selMONObgcolor,
|
|
c000000},
|
|
[SchemeFlexSelGRID] = {titleselfgcolor, selGRIDbgcolor, selGRIDbgcolor,
|
|
c000000},
|
|
[SchemeFlexSelGRD1] = {titleselfgcolor, selGRD1bgcolor, selGRD1bgcolor,
|
|
c000000},
|
|
[SchemeFlexSelGRD2] = {titleselfgcolor, selGRD2bgcolor, selGRD2bgcolor,
|
|
c000000},
|
|
[SchemeFlexSelGRDM] = {titleselfgcolor, selGRDMbgcolor, selGRDMbgcolor,
|
|
c000000},
|
|
[SchemeFlexSelHGRD] = {titleselfgcolor, selHGRDbgcolor, selHGRDbgcolor,
|
|
c000000},
|
|
[SchemeFlexSelDWDL] = {titleselfgcolor, selDWDLbgcolor, selDWDLbgcolor,
|
|
c000000},
|
|
[SchemeFlexSelSPRL] = {titleselfgcolor, selSPRLbgcolor, selSPRLbgcolor,
|
|
c000000},
|
|
[SchemeFlexSelFloat] = {titleselfgcolor, selfloatbgcolor, selfloatbgcolor,
|
|
c000000},
|
|
#endif // BAR_FLEXWINTITLE_PATCH
|
|
};
|
|
|
|
#if BAR_POWERLINE_STATUS_PATCH
|
|
static char *statuscolors[][ColCount] = {
|
|
/* fg bg border float */
|
|
[SchemeNorm] = {normfgcolor, normbgcolor, normbordercolor, normfloatcolor},
|
|
[SchemeSel] = {selfgcolor, selbgcolor, selbordercolor, selfloatcolor},
|
|
[SchemeTitleNorm] = {titlenormfgcolor, titlenormbgcolor,
|
|
titlenormbordercolor, titlenormfloatcolor},
|
|
[SchemeTitleSel] = {titleselfgcolor, titleselbgcolor, titleselbordercolor,
|
|
titleselfloatcolor},
|
|
[SchemeTagsNorm] = {tagsnormfgcolor, tagsnormbgcolor, tagsnormbordercolor,
|
|
tagsnormfloatcolor},
|
|
[SchemeTagsSel] = {tagsselfgcolor, tagsselbgcolor, tagsselbordercolor,
|
|
tagsselfloatcolor},
|
|
[SchemeHidNorm] = {hidnormfgcolor, hidnormbgcolor, c000000, c000000},
|
|
[SchemeHidSel] = {hidselfgcolor, hidselbgcolor, c000000, c000000},
|
|
[SchemeUrg] = {urgfgcolor, urgbgcolor, urgbordercolor, urgfloatcolor},
|
|
};
|
|
#endif // BAR_POWERLINE_STATUS_PATCH
|
|
|
|
#if BAR_LAYOUTMENU_PATCH
|
|
static const char *layoutmenu_cmd = "layoutmenu.sh";
|
|
#endif
|
|
|
|
#if BAR_LAUNCHER_PATCH
|
|
static const Launcher launchers[] = {
|
|
/* icon to display command */
|
|
{"surf", CMD("surf", "duckduckgo.com")},
|
|
};
|
|
#endif // BAR_LAUNCHER_PATCH
|
|
|
|
#if COOL_AUTOSTART_PATCH
|
|
static const char *const autostart[] = {
|
|
"st", NULL, NULL /* terminate */
|
|
};
|
|
#endif // COOL_AUTOSTART_PATCH
|
|
|
|
#if RENAMED_SCRATCHPADS_PATCH
|
|
static const char *scratchpadcmd[] = {"s", "st", "-n", "spterm", NULL};
|
|
#elif SCRATCHPADS_PATCH
|
|
const char *spcmd1[] = {"st", "-n", "spterm", "-g", "120x34", NULL};
|
|
static Sp scratchpads[] = {
|
|
/* name cmd */
|
|
{"spterm", spcmd1},
|
|
};
|
|
#endif // SCRATCHPADS_PATCH
|
|
|
|
/* Tags
|
|
* In a traditional dwm the number of tags in use can be changed simply by
|
|
* changing the number of strings in the tags array. This build does things a
|
|
* bit different which has some added benefits. If you need to change the number
|
|
* of tags here then change the NUMTAGS macro in dwm.c.
|
|
*
|
|
* Examples:
|
|
*
|
|
* 1) static char *tagicons[][NUMTAGS*2] = {
|
|
* [DEFAULT_TAGS] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
|
|
* "B", "C", "D", "E", "F", "G", "H", "I" },
|
|
* }
|
|
*
|
|
* 2) static char *tagicons[][1] = {
|
|
* [DEFAULT_TAGS] = { "•" },
|
|
* }
|
|
*
|
|
* The first example would result in the tags on the first monitor to be 1
|
|
* through 9, while the tags for the second monitor would be named A through I.
|
|
* A third monitor would start again at 1 through 9 while the tags on a fourth
|
|
* monitor would also be named A through I. Note the tags count of NUMTAGS*2 in
|
|
* the array initialiser which defines how many tag text / icon exists in the
|
|
* array. This can be changed to *3 to add separate icons for a third monitor.
|
|
*
|
|
* For the second example each tag would be represented as a bullet point. Both
|
|
* cases work the same from a technical standpoint - the icon index is derived
|
|
* from the tag index and the monitor index. If the icon index is is greater
|
|
* than the number of tag icons then it will wrap around until it an icon
|
|
* matches. Similarly if there are two tag icons then it would alternate between
|
|
* them. This works seamlessly with alternative tags and alttagsdecoration
|
|
* patches.
|
|
*/
|
|
#if NAMETAG_PATCH
|
|
static char tagicons[][NUMTAGS][MAX_TAGLEN] =
|
|
#else
|
|
static char *tagicons[][NUMTAGS] =
|
|
#endif // NAMETAG_PATCH
|
|
{
|
|
/*[DEFAULT_TAGS] = { "1", "2", "3", "4", "5", "6", "7", "8", "9"
|
|
},*/
|
|
[DEFAULT_TAGS] = {"一", "二", "三", "四", "五", "六", "七", "八", "九"},
|
|
[ALTERNATIVE_TAGS] = {"A", "B", "C", "D", "E", "F", "G", "H", "I"},
|
|
[ALT_TAGS_DECORATION] = {"<1>", "<2>", "<3>", "<4>", "<5>", "<6>",
|
|
"<7>", "<8>", "<9>"},
|
|
};
|
|
|
|
#if BAR_TAGGRID_PATCH
|
|
/* grid of tags */
|
|
#define SWITCHTAG_UP 1 << 0
|
|
#define SWITCHTAG_DOWN 1 << 1
|
|
#define SWITCHTAG_LEFT 1 << 2
|
|
#define SWITCHTAG_RIGHT 1 << 3
|
|
#define SWITCHTAG_TOGGLETAG 1 << 4
|
|
#define SWITCHTAG_TAG 1 << 5
|
|
#define SWITCHTAG_VIEW 1 << 6
|
|
#define SWITCHTAG_TOGGLEVIEW 1 << 7
|
|
|
|
static const int tagrows = 2;
|
|
#endif // BAR_TAGGRID_PATCH
|
|
|
|
/* There are two options when it comes to per-client rules:
|
|
* - a typical struct table or
|
|
* - using the RULE macro
|
|
*
|
|
* A traditional struct table looks like this:
|
|
* // class instance title wintype tags mask isfloating monitor
|
|
* { "Gimp", NULL, NULL, NULL, 1 << 4, 0, -1 },
|
|
* { "Firefox", NULL, NULL, NULL, 1 << 7, 0, -1 },
|
|
*
|
|
* The RULE macro has the default values set for each field allowing you to only
|
|
* specify the values that are relevant for your rule, e.g.
|
|
*
|
|
* RULE(.class = "Gimp", .tags = 1 << 4)
|
|
* RULE(.class = "Firefox", .tags = 1 << 7)
|
|
*
|
|
* Refer to the Rule struct definition for the list of available fields
|
|
* depending on the patches you enable.
|
|
*/
|
|
static const Rule rules[] = {
|
|
/* xprop(1):
|
|
* WM_CLASS(STRING) = instance, class
|
|
* WM_NAME(STRING) = title
|
|
* WM_WINDOW_ROLE(STRING) = role
|
|
* _NET_WM_WINDOW_TYPE(ATOM) = wintype
|
|
*/
|
|
RULE(.wintype = WTYPE "DIALOG", .isfloating = 1)
|
|
RULE(.wintype = WTYPE "UTILITY", .isfloating = 1)
|
|
RULE(.wintype = WTYPE "TOOLBAR", .isfloating = 1)
|
|
RULE(.wintype = WTYPE "SPLASH", .isfloating = 1)
|
|
RULE(.class = "Gimp", .tags = 1 << 4)
|
|
RULE(.class = "Firefox", .tags = 1 << 7)
|
|
#if RENAMED_SCRATCHPADS_PATCH
|
|
RULE(.instance = "spterm", .scratchkey = 's',
|
|
.isfloating = 1)
|
|
#elif SCRATCHPADS_PATCH
|
|
RULE(.instance = "spterm", .tags = SPTAG(0),
|
|
.isfloating = 1)
|
|
#endif // SCRATCHPADS_PATCH
|
|
};
|
|
|
|
#if MONITOR_RULES_PATCH
|
|
#if PERTAG_PATCH
|
|
static const MonitorRule monrules[] = {
|
|
/* monitor tag layout mfact nmaster showbar topbar */
|
|
{1, -1, 2, -1, -1, -1, -1}, // use a different layout for the second monitor
|
|
{-1, -1, 0, -1, -1, -1, -1}, // default
|
|
};
|
|
#else
|
|
static const MonitorRule monrules[] = {
|
|
/* monitor layout mfact nmaster showbar topbar */
|
|
{1, 2, -1, -1, -1, -1}, // use a different layout for the second monitor
|
|
{-1, 0, -1, -1, -1, -1}, // default
|
|
};
|
|
#endif // PERTAG_PATCH
|
|
#endif // MONITOR_RULES_PATCH
|
|
|
|
#if INSETS_PATCH
|
|
static const Inset default_inset = {
|
|
.x = 0,
|
|
.y = 30,
|
|
.w = 0,
|
|
.h = 0,
|
|
};
|
|
#endif // INSETS_PATCH
|
|
|
|
/* Bar rules allow you to configure what is shown where on the bar, as well as
|
|
* introducing your own bar modules.
|
|
*
|
|
* monitor:
|
|
* -1 show on all monitors
|
|
* 0 show on monitor 0
|
|
* 'A' show on active monitor (i.e. focused / selected) (or just -1 for
|
|
* active?) bar - bar index, 0 is default, 1 is extrabar alignment - how the
|
|
* module is aligned compared to other modules widthfunc, drawfunc, clickfunc -
|
|
* providing bar module width, draw and click functions name - does nothing,
|
|
* intended for visual clue and for logging / debugging
|
|
*/
|
|
static const BarRule barrules[] = {
|
|
/* monitor bar alignment widthfunc drawfunc
|
|
* clickfunc hoverfunc name */
|
|
#if BAR_STATUSBUTTON_PATCH
|
|
{-1, 0, BAR_ALIGN_LEFT, width_stbutton, draw_stbutton, click_stbutton, NULL,
|
|
"statusbutton"},
|
|
#endif // BAR_STATUSBUTTON_PATCH
|
|
#if BAR_LAUNCHER_PATCH
|
|
{-1, 0, BAR_ALIGN_LEFT, width_launcher, draw_launcher, click_launcher, NULL,
|
|
"launcher"},
|
|
#endif // BAR_LAUNCHER_PATCH
|
|
#if BAR_POWERLINE_TAGS_PATCH
|
|
{0, 0, BAR_ALIGN_LEFT, width_pwrl_tags, draw_pwrl_tags, click_pwrl_tags,
|
|
hover_pwrl_tags, "powerline_tags"},
|
|
#endif // BAR_POWERLINE_TAGS_PATCH
|
|
#if BAR_TAGS_PATCH
|
|
{-1, 0, BAR_ALIGN_LEFT, width_tags, draw_tags, click_tags, hover_tags,
|
|
"tags"},
|
|
#endif // BAR_TAGS_PATCH
|
|
#if BAR_TAGLABELS_PATCH
|
|
{-1, 0, BAR_ALIGN_LEFT, width_taglabels, draw_taglabels, click_taglabels,
|
|
hover_taglabels, "taglabels"},
|
|
#endif // BAR_TAGLABELS_PATCH
|
|
#if BAR_TAGGRID_PATCH
|
|
{-1, 0, BAR_ALIGN_LEFT, width_taggrid, draw_taggrid, click_taggrid, NULL,
|
|
"taggrid"},
|
|
#endif // BAR_TAGGRID_PATCH
|
|
#if BAR_SYSTRAY_PATCH
|
|
{0, 0, BAR_ALIGN_RIGHT, width_systray, draw_systray, click_systray, NULL,
|
|
"systray"},
|
|
#endif // BAR_SYSTRAY_PATCH
|
|
#if BAR_LTSYMBOL_PATCH
|
|
{-1, 0, BAR_ALIGN_LEFT, width_ltsymbol, draw_ltsymbol, click_ltsymbol, NULL,
|
|
"layout"},
|
|
#endif // BAR_LTSYMBOL_PATCH
|
|
#if BAR_STATUSCOLORS_PATCH && BAR_STATUSCMD_PATCH
|
|
{statusmon, 0, BAR_ALIGN_RIGHT, width_statuscolors, draw_statuscolors,
|
|
click_statuscmd, NULL, "statuscolors"},
|
|
#elif BAR_STATUSCOLORS_PATCH
|
|
{statusmon, 0, BAR_ALIGN_RIGHT, width_statuscolors, draw_statuscolors,
|
|
click_statuscolors, NULL, "statuscolors"},
|
|
#elif BAR_STATUS2D_PATCH && BAR_STATUSCMD_PATCH
|
|
{statusmon, 0, BAR_ALIGN_RIGHT, width_status2d, draw_status2d,
|
|
click_statuscmd, NULL, "status2d"},
|
|
#elif BAR_STATUS2D_PATCH
|
|
{statusmon, 0, BAR_ALIGN_RIGHT, width_status2d, draw_status2d,
|
|
click_status2d, NULL, "status2d"},
|
|
#elif BAR_POWERLINE_STATUS_PATCH
|
|
{statusmon, 0, BAR_ALIGN_RIGHT, width_pwrl_status, draw_pwrl_status,
|
|
click_pwrl_status, NULL, "powerline_status"},
|
|
#elif BAR_STATUS_PATCH && BAR_STATUSCMD_PATCH
|
|
{statusmon, 0, BAR_ALIGN_RIGHT, width_status, draw_status, click_statuscmd,
|
|
NULL, "status"},
|
|
#elif BAR_STATUS_PATCH
|
|
{statusmon, 0, BAR_ALIGN_RIGHT, width_status, draw_status, click_status,
|
|
NULL, "status"},
|
|
#endif // BAR_STATUS2D_PATCH | BAR_STATUSCMD_PATCH
|
|
#if XKB_PATCH
|
|
{0, 0, BAR_ALIGN_RIGHT, width_xkb, draw_xkb, click_xkb, NULL, "xkb"},
|
|
#endif // XKB_PATCH
|
|
#if BAR_FLEXWINTITLE_PATCH
|
|
{-1, 0, BAR_ALIGN_NONE, width_flexwintitle, draw_flexwintitle,
|
|
click_flexwintitle, NULL, "flexwintitle"},
|
|
#elif BAR_TABGROUPS_PATCH
|
|
{-1, 0, BAR_ALIGN_NONE, width_bartabgroups, draw_bartabgroups,
|
|
click_bartabgroups, NULL, "bartabgroups"},
|
|
#elif BAR_AWESOMEBAR_PATCH
|
|
{-1, 0, BAR_ALIGN_NONE, width_awesomebar, draw_awesomebar, click_awesomebar,
|
|
NULL, "awesomebar"},
|
|
#elif BAR_FANCYBAR_PATCH
|
|
{-1, 0, BAR_ALIGN_NONE, width_fancybar, draw_fancybar, click_fancybar, NULL,
|
|
"fancybar"},
|
|
#elif BAR_WINTITLE_PATCH
|
|
{-1, 0, BAR_ALIGN_NONE, width_wintitle, draw_wintitle, click_wintitle, NULL,
|
|
"wintitle"},
|
|
#endif // BAR_TABGROUPS_PATCH | BAR_AWESOMEBAR_PATCH | BAR_FANCYBAR_PATCH |
|
|
// BAR_WINTITLE_PATCH
|
|
#if BAR_EXTRASTATUS_PATCH
|
|
#if BAR_STATUSCOLORS_PATCH && BAR_STATUSCMD_PATCH
|
|
{statusmon, 1, BAR_ALIGN_CENTER, width_statuscolors_es,
|
|
draw_statuscolors_es, click_statuscmd_es, NULL, "statuscolors_es"},
|
|
#elif BAR_STATUSCOLORS_PATCH
|
|
{statusmon, 1, BAR_ALIGN_CENTER, width_statuscolors_es,
|
|
draw_statuscolors_es, click_statuscolors, NULL, "statuscolors_es"},
|
|
#elif BAR_STATUS2D_PATCH && BAR_STATUSCMD_PATCH
|
|
{statusmon, 1, BAR_ALIGN_CENTER, width_status2d_es, draw_status2d_es,
|
|
click_statuscmd_es, NULL, "status2d_es"},
|
|
#elif BAR_STATUS2D_PATCH
|
|
{statusmon, 1, BAR_ALIGN_CENTER, width_status2d_es, draw_status2d_es,
|
|
click_status2d, NULL, "status2d_es"},
|
|
#elif BAR_POWERLINE_STATUS_PATCH
|
|
{statusmon, 1, BAR_ALIGN_RIGHT, width_pwrl_status_es, draw_pwrl_status_es,
|
|
click_pwrl_status, NULL, "powerline_status"},
|
|
#elif BAR_STATUSCMD_PATCH && BAR_STATUS_PATCH
|
|
{statusmon, 1, BAR_ALIGN_CENTER, width_status_es, draw_status_es,
|
|
click_statuscmd_es, NULL, "status_es"},
|
|
#elif BAR_STATUS_PATCH
|
|
{statusmon, 1, BAR_ALIGN_CENTER, width_status_es, draw_status_es,
|
|
click_status, NULL, "status_es"},
|
|
#endif // BAR_STATUS2D_PATCH | BAR_STATUSCMD_PATCH
|
|
#endif // BAR_EXTRASTATUS_PATCH
|
|
#if BAR_FLEXWINTITLE_PATCH
|
|
#if BAR_WINTITLE_HIDDEN_PATCH
|
|
{-1, 1, BAR_ALIGN_RIGHT_RIGHT, width_wintitle_hidden, draw_wintitle_hidden,
|
|
click_wintitle_hidden, NULL, "wintitle_hidden"},
|
|
#endif
|
|
#if BAR_WINTITLE_FLOATING_PATCH
|
|
{-1, 1, BAR_ALIGN_LEFT, width_wintitle_floating, draw_wintitle_floating,
|
|
click_wintitle_floating, NULL, "wintitle_floating"},
|
|
#endif // BAR_WINTITLE_FLOATING_PATCH
|
|
#endif // BAR_FLEXWINTITLE_PATCH
|
|
};
|
|
|
|
/* layout(s) */
|
|
static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
|
|
static const int nmaster = 1; /* number of clients in master area */
|
|
#if FLEXTILE_DELUXE_LAYOUT
|
|
static const int nstack = 0; /* number of clients in primary stack area */
|
|
#endif // FLEXTILE_DELUXE_LAYOUT
|
|
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 */
|
|
#if DECORATION_HINTS_PATCH
|
|
static const int decorhints = 1; /* 1 means respect decoration hints */
|
|
#endif // DECORATION_HINTS_PATCH
|
|
|
|
#if NROWGRID_LAYOUT
|
|
#define FORCE_VSPLIT 1
|
|
#endif
|
|
|
|
#if TAPRESIZE_PATCH
|
|
/* 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},
|
|
};
|
|
#endif // TAPRESIZE_PATCH
|
|
|
|
#if FLEXTILE_DELUXE_LAYOUT
|
|
static const Layout layouts[] = {
|
|
/* symbol arrange function, { nmaster, nstack, layout, master axis,
|
|
stack axis, secondary stack axis, symbol func } */
|
|
{"[]=",
|
|
flextile,
|
|
{-1, -1, SPLIT_VERTICAL, TOP_TO_BOTTOM, TOP_TO_BOTTOM, 0,
|
|
NULL}}, // default tile layout
|
|
{"><>", NULL, {0}}, /* no layout function means floating behavior */
|
|
{"[M]", flextile, {-1, -1, NO_SPLIT, MONOCLE, MONOCLE, 0, NULL}}, // monocle
|
|
{"|||",
|
|
flextile,
|
|
{-1, -1, SPLIT_VERTICAL, LEFT_TO_RIGHT, TOP_TO_BOTTOM, 0,
|
|
NULL}}, // columns (col) layout
|
|
{">M>",
|
|
flextile,
|
|
{-1, -1, FLOATING_MASTER, LEFT_TO_RIGHT, LEFT_TO_RIGHT, 0,
|
|
NULL}}, // floating master
|
|
{"[D]",
|
|
flextile,
|
|
{-1, -1, SPLIT_VERTICAL, TOP_TO_BOTTOM, MONOCLE, 0, NULL}}, // deck
|
|
{"TTT",
|
|
flextile,
|
|
{-1, -1, SPLIT_HORIZONTAL, LEFT_TO_RIGHT, LEFT_TO_RIGHT, 0,
|
|
NULL}}, // bstack
|
|
{"===",
|
|
flextile,
|
|
{-1, -1, SPLIT_HORIZONTAL, LEFT_TO_RIGHT, TOP_TO_BOTTOM, 0,
|
|
NULL}}, // bstackhoriz
|
|
{"|M|",
|
|
flextile,
|
|
{-1, -1, SPLIT_CENTERED_VERTICAL, LEFT_TO_RIGHT, TOP_TO_BOTTOM,
|
|
TOP_TO_BOTTOM, NULL}}, // centeredmaster
|
|
{"-M-",
|
|
flextile,
|
|
{-1, -1, SPLIT_CENTERED_HORIZONTAL, TOP_TO_BOTTOM, LEFT_TO_RIGHT,
|
|
LEFT_TO_RIGHT, NULL}}, // centeredmaster horiz
|
|
{":::",
|
|
flextile,
|
|
{-1, -1, NO_SPLIT, GAPPLESSGRID, GAPPLESSGRID, 0, NULL}}, // gappless grid
|
|
{"[\\]",
|
|
flextile,
|
|
{-1, -1, NO_SPLIT, DWINDLE, DWINDLE, 0, NULL}}, // fibonacci dwindle
|
|
{"(@)",
|
|
flextile,
|
|
{-1, -1, NO_SPLIT, SPIRAL, SPIRAL, 0, NULL}}, // fibonacci spiral
|
|
{"[T]",
|
|
flextile,
|
|
{-1, -1, SPLIT_VERTICAL, LEFT_TO_RIGHT, TATAMI, 0, NULL}}, // tatami mats
|
|
#if TILE_LAYOUT
|
|
{"[]=", tile, {0}},
|
|
#endif
|
|
#if MONOCLE_LAYOUT
|
|
{"[M]", monocle, {0}},
|
|
#endif
|
|
#if BSTACK_LAYOUT
|
|
{"TTT", bstack, {0}},
|
|
#endif
|
|
#if BSTACKHORIZ_LAYOUT
|
|
{"===", bstackhoriz, {0}},
|
|
#endif
|
|
#if CENTEREDMASTER_LAYOUT
|
|
{"|M|", centeredmaster, {0}},
|
|
#endif
|
|
#if CENTEREDFLOATINGMASTER_LAYOUT
|
|
{">M>", centeredfloatingmaster, {0}},
|
|
#endif
|
|
#if COLUMNS_LAYOUT
|
|
{"|||", col, {0}},
|
|
#endif
|
|
#if DECK_LAYOUT
|
|
{"[D]", deck, {0}},
|
|
#endif
|
|
#if FIBONACCI_SPIRAL_LAYOUT
|
|
{"(@)", spiral, {0}},
|
|
#endif
|
|
#if FIBONACCI_DWINDLE_LAYOUT
|
|
{"[\\]", dwindle, {0}},
|
|
#endif
|
|
#if GRIDMODE_LAYOUT
|
|
{"HHH", grid, {0}},
|
|
#endif
|
|
#if HORIZGRID_LAYOUT
|
|
{"---", horizgrid, {0}},
|
|
#endif
|
|
#if GAPPLESSGRID_LAYOUT
|
|
{":::", gaplessgrid, {0}},
|
|
#endif
|
|
#if NROWGRID_LAYOUT
|
|
{"###", nrowgrid, {0}},
|
|
#endif
|
|
};
|
|
#else
|
|
static const Layout layouts[] = {
|
|
/* symbol arrange function */
|
|
#if TILE_LAYOUT
|
|
{"[]=", tile}, /* first entry is default */
|
|
#endif
|
|
#if BSTACK_LAYOUT
|
|
{"TTT", bstack},
|
|
#endif
|
|
#if BSTACKHORIZ_LAYOUT
|
|
{"===", bstackhoriz},
|
|
#endif
|
|
#if CENTEREDMASTER_LAYOUT
|
|
{"|M|", centeredmaster},
|
|
#endif
|
|
#if CENTEREDFLOATINGMASTER_LAYOUT
|
|
{">M>", centeredfloatingmaster},
|
|
#endif
|
|
#if COLUMNS_LAYOUT
|
|
{"|||", col},
|
|
#endif
|
|
#if DECK_LAYOUT
|
|
{"[D]", deck},
|
|
#endif
|
|
#if FIBONACCI_SPIRAL_LAYOUT
|
|
{"(@)", spiral},
|
|
#endif
|
|
#if FIBONACCI_DWINDLE_LAYOUT
|
|
{"[\\]", dwindle},
|
|
#endif
|
|
#if GRIDMODE_LAYOUT
|
|
{"HHH", grid},
|
|
#endif
|
|
#if HORIZGRID_LAYOUT
|
|
{"---", horizgrid},
|
|
#endif
|
|
#if GAPPLESSGRID_LAYOUT
|
|
{":::", gaplessgrid},
|
|
#endif
|
|
#if NROWGRID_LAYOUT
|
|
{"###", nrowgrid},
|
|
#endif
|
|
#if MONOCLE_LAYOUT
|
|
{"[M]", monocle},
|
|
#endif
|
|
{"><>", NULL}, /* no layout function means floating behavior */
|
|
};
|
|
#endif // FLEXTILE_DELUXE_LAYOUT
|
|
|
|
#if XKB_PATCH
|
|
/* xkb frontend */
|
|
static const char *xkb_layouts[] = {
|
|
"pl",
|
|
"en",
|
|
};
|
|
#endif // XKB_PATCH
|
|
|
|
/* key definitions */
|
|
#define MODKEY Mod4Mask
|
|
#if COMBO_PATCH && SWAPTAGS_PATCH && TAGOTHERMONITOR_PATCH
|
|
#define TAGKEYS(KEY, TAG) \
|
|
{MODKEY, KEY, comboview, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ShiftMask, KEY, combotag, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask | ShiftMask, KEY, swaptags, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask | ControlMask, KEY, tagprevmon, {.ui = 1 << TAG}},
|
|
#elif COMBO_PATCH && SWAPTAGS_PATCH
|
|
#define TAGKEYS(KEY, TAG) \
|
|
{MODKEY, KEY, comboview, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ShiftMask, KEY, combotag, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask | ShiftMask, KEY, swaptags, {.ui = 1 << TAG}},
|
|
#elif COMBO_PATCH && TAGOTHERMONITOR_PATCH
|
|
#define TAGKEYS(KEY, TAG) \
|
|
{MODKEY, KEY, comboview, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ShiftMask, KEY, combotag, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask | ControlMask, KEY, tagprevmon, {.ui = 1 << TAG}},
|
|
#elif COMBO_PATCH
|
|
#define TAGKEYS(KEY, TAG) \
|
|
{MODKEY, KEY, comboview, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ShiftMask, KEY, combotag, {.ui = 1 << TAG}}, \
|
|
{MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}},
|
|
#elif SWAPTAGS_PATCH && TAGOTHERMONITOR_PATCH
|
|
#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}}, \
|
|
{MODKEY | Mod4Mask | ShiftMask, KEY, swaptags, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask | ControlMask, KEY, tagprevmon, {.ui = 1 << TAG}},
|
|
#elif SWAPTAGS_PATCH
|
|
#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}}, \
|
|
{MODKEY | Mod4Mask | ShiftMask, KEY, swaptags, {.ui = 1 << TAG}},
|
|
#elif TAGOTHERMONITOR_PATCH
|
|
#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}}, \
|
|
{MODKEY | Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG}}, \
|
|
{MODKEY | Mod4Mask | ControlMask, KEY, tagprevmon, {.ui = 1 << TAG}},
|
|
#else
|
|
#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}},
|
|
#endif // COMBO_PATCH / SWAPTAGS_PATCH / TAGOTHERMONITOR_PATCH
|
|
|
|
#if STACKER_PATCH
|
|
#define STACKKEYS(MOD, ACTION) \
|
|
{MOD, XK_j, ACTION##stack, {.i = INC(+1)}}, \
|
|
{MOD, XK_k, ACTION##stack, {.i = INC(-1)}}, \
|
|
{MOD, XK_s, ACTION##stack, {.i = PREVSEL}}, \
|
|
{MOD, XK_w, ACTION##stack, {.i = 0}}, \
|
|
{MOD, XK_e, ACTION##stack, {.i = 1}}, \
|
|
{MOD, XK_a, ACTION##stack, {.i = 2}}, \
|
|
{MOD, XK_z, ACTION##stack, {.i = -1}},
|
|
#endif // STACKER_PATCH
|
|
|
|
#if BAR_HOLDBAR_PATCH
|
|
#define HOLDKEY 0 // replace 0 with the keysym to activate holdbar
|
|
#endif // BAR_HOLDBAR_PATCH
|
|
|
|
/* commands */
|
|
#if !NODMENU_PATCH
|
|
static char dmenumon[2] =
|
|
"0"; /* component of dmenucmd, manipulated in spawn() */
|
|
#endif // NODMENU_PATCH
|
|
static const char *dmenucmd[] = {"dmenu_run",
|
|
#if !NODMENU_PATCH
|
|
"-m",
|
|
dmenumon,
|
|
#endif // NODMENU_PATCH
|
|
"-fn",
|
|
dmenufont,
|
|
"-nb",
|
|
normbgcolor,
|
|
"-nf",
|
|
normfgcolor,
|
|
"-sb",
|
|
selbgcolor,
|
|
"-sf",
|
|
selfgcolor,
|
|
#if BAR_DMENUMATCHTOP_PATCH
|
|
topbar ? NULL : "-b",
|
|
#endif // BAR_DMENUMATCHTOP_PATCH
|
|
NULL};
|
|
static const char *termcmd[] = {"wezterm", NULL};
|
|
static const char *prtscrcmd[] = {"flameshot", "gui", NULL};
|
|
static const char *mutevol[] = {"pactl", "set-sink-mute", "0", "toggle", NULL};
|
|
static const char *downvol[] = {"pactl", "set-sink-volume", "0", "-3%", NULL};
|
|
static const char *upvol[] = {"pactl", "set-sink-volume", "0", "+3%", NULL};
|
|
// static const char *mutemic[] = {"pactl", "set-source-mute", "0", "toggle",
|
|
// NULL};
|
|
static const char *mutemic[] = {"equibop", "--toggle-mic", NULL};
|
|
static const char *downbrt[] = {"brightnessctl", "s", "5%-", NULL};
|
|
static const char *upbrt[] = {"brightnessctl", "s", "5%+", NULL};
|
|
static const char *displ[] = {"arandr", NULL};
|
|
static const char *wlan[] = {"wezterm", "-e", "nmtui", NULL};
|
|
static const char *tools[] = {"lxappearance"};
|
|
// static const char *search[] = {"rofi", "-show", "drun", NULL};
|
|
// static const char *launcha[] = {alttabstart};
|
|
static const char *nemo[] = {"nemo", NULL};
|
|
static const char *explorer[] = {"rio", "-e", "lf", NULL};
|
|
static const char *editor[] = {"neovide", NULL};
|
|
static const char *mail[] = {"wezterm", "-e", "neomutt", NULL};
|
|
static const char *music[] = {"wezterm", "-e", "ncmpcpp", NULL};
|
|
static const char *spotify[] = {"wezterm", "-e", "ncspot", NULL};
|
|
static const char *audio[] = {"wezterm", "-e", "ncpamixer", NULL};
|
|
|
|
static const char *locksession[] = {"loginctl", "lock-session", NULL};
|
|
|
|
// static const char *websearch[] = {".config/rofi/scripts/websearch", NULL};
|
|
// static const char *emoji[] = {".config/rofi/scripts/emoji", NULL};
|
|
static const char *launcher[] = {"rofi", "-show", "drun", NULL};
|
|
// static const char *wallpaper[] = {".config/rofi/scripts/wallpaper", NULL};
|
|
// static const char *theme[] = {".config/rofi/scripts/theme", NULL};
|
|
// static const char *powermenu[] = {".config/rofi/scripts/powermenu", NULL};
|
|
|
|
#if BAR_STATUSCMD_PATCH
|
|
#if BAR_DWMBLOCKS_PATCH
|
|
/* This defines the name of the executable that handles the bar (used for
|
|
* signalling purposes) */
|
|
#define STATUSBAR "dwmblocks"
|
|
#else
|
|
/* commands spawned when clicking statusbar, the mouse button pressed is
|
|
* exported as BUTTON */
|
|
static const StatusCmd statuscmds[] = {
|
|
{"notify-send Volume$BUTTON", 1},
|
|
{"notify-send CPU$BUTTON", 2},
|
|
{"notify-send Battery$BUTTON", 3},
|
|
};
|
|
/* test the above with: xsetroot -name "$(printf '\x01Volume |\x02 CPU |\x03
|
|
* Battery')" */
|
|
static const char *statuscmd[] = {"/bin/sh", "-c", NULL, NULL};
|
|
#endif // BAR_DWMBLOCKS_PATCH
|
|
#endif // BAR_STATUSCMD_PATCH
|
|
|
|
#if ON_EMPTY_KEYS_PATCH
|
|
static const char *firefoxcmd[] = {"firefox", NULL};
|
|
static const Key on_empty_keys[] = {
|
|
/* modifier key function argument */
|
|
{0, XK_f, spawn, {.v = firefoxcmd}},
|
|
};
|
|
#endif // ON_EMPTY_KEYS_PATCH
|
|
|
|
static const Key keys[] = {
|
|
/* modifier key function argument */
|
|
{0, XF86XK_AudioMute, spawn, {.v = mutevol}},
|
|
{0, XF86XK_AudioLowerVolume, spawn, {.v = downvol}},
|
|
{0, XF86XK_AudioRaiseVolume, spawn, {.v = upvol}},
|
|
{0, XF86XK_AudioMicMute, spawn, {.v = mutemic}},
|
|
{0, XF86XK_MonBrightnessDown, spawn, {.v = downbrt}},
|
|
{0, XF86XK_MonBrightnessUp, spawn, {.v = upbrt}},
|
|
{0, XF86XK_Display, spawn, {.v = displ}},
|
|
{0, XF86XK_WLAN, spawn, {.v = wlan}},
|
|
{0, XF86XK_Tools, spawn, {.v = tools}},
|
|
// { 0, XF86XK_Search, spawn, {.v =
|
|
// search}},
|
|
/*{ 0, XF86XK_LaunchA, alttabstart,
|
|
{0}},*/
|
|
{0, XF86XK_Explorer, spawn, {.v = explorer}},
|
|
|
|
{MODKEY | Mod1Mask, XK_F1, spawn, {.v = upvol}},
|
|
{MODKEY | Mod1Mask, XK_F3, spawn, {.v = downvol}},
|
|
{MODKEY, XK_n, spawn, {.v = nemo}},
|
|
{MODKEY, XK_w, spawn, {.v = editor}},
|
|
{MODKEY, XK_e, spawn, {.v = explorer}},
|
|
{MODKEY | ShiftMask, XK_l, spawn, {.v = locksession}},
|
|
{0, XK_Print, spawn, {.v = prtscrcmd}},
|
|
{MODKEY | ShiftMask, XK_s, spawn, {.v = prtscrcmd}},
|
|
{MODKEY, XK_a, spawn, {.v = spotify}},
|
|
{MODKEY, XK_s, spawn, {.v = music}},
|
|
{MODKEY, XK_d, spawn, {.v = audio}},
|
|
{MODKEY, XK_x, spawn, {.v = mail}},
|
|
// { MODKEY, XK_z, spawn, {.v =
|
|
// websearch} }, { MODKEY, XK_semicolon, spawn, {.v =
|
|
// emoji} },
|
|
{MODKEY, XK_space, spawn, {.v = launcher}},
|
|
// { MODKEY, XK_w, spawn, {.v =
|
|
// wallpaper} }, { MODKEY, XK_e, spawn, {.v = theme}
|
|
// }, { MODKEY, XK_x, spawn, {.v =
|
|
// powermenu} },
|
|
#if KEYMODES_PATCH
|
|
{MODKEY, XK_Escape, setkeymode, {.ui = COMMANDMODE}},
|
|
#endif // KEYMODES_PATCH
|
|
{MODKEY, XK_p, spawn, {.v = dmenucmd}},
|
|
{MODKEY | ShiftMask, XK_Return, spawn, {.v = termcmd}},
|
|
#if RIODRAW_PATCH
|
|
{MODKEY | ControlMask, XK_p, riospawnsync, {.v = dmenucmd}},
|
|
{MODKEY | ControlMask, XK_Return, riospawn, {.v = termcmd}},
|
|
{MODKEY, XK_s, rioresize, {0}},
|
|
#endif // RIODRAW_PATCH
|
|
{MODKEY, XK_b, togglebar, {0}},
|
|
#if TOGGLETOPBAR_PATCH
|
|
{MODKEY | ShiftMask, XK_b, toggletopbar, {0}},
|
|
#endif // TOGGLETOPBAR_PATCH
|
|
#if TAB_PATCH
|
|
{MODKEY | ControlMask, XK_b, tabmode, {-1}},
|
|
#endif // TAB_PATCH
|
|
#if FOCUSMASTER_PATCH || FOCUSMASTER_RETURN_PATCH
|
|
{MODKEY | ControlMask, XK_space, focusmaster, {0}},
|
|
#endif // FOCUSMASTER_PATCH / FOCUSMASTER_RETURN_PATCH
|
|
#if STACKER_PATCH
|
|
STACKKEYS(MODKEY, focus) STACKKEYS(MODKEY | ShiftMask, push)
|
|
#else
|
|
{MODKEY, XK_j, focusstack, {.i = +1}},
|
|
{MODKEY, XK_k, focusstack, {.i = -1}},
|
|
#endif // STACKER_PATCH
|
|
#if FOCUSDIR_PATCH
|
|
{MODKEY, XK_Left, focusdir, {.i = 0}}, // left
|
|
{MODKEY, XK_Right, focusdir, {.i = 1}}, // right
|
|
{MODKEY, XK_Up, focusdir, {.i = 2}}, // up
|
|
{MODKEY, XK_Down, focusdir, {.i = 3}}, // down
|
|
#endif // FOCUSDIR_PATCH
|
|
#if PLACEDIR_PATCH
|
|
{MODKEY | ControlMask, XK_Left, placedir, {.i = 0}}, // left
|
|
{MODKEY | ControlMask, XK_Right, placedir, {.i = 1}}, // right
|
|
{MODKEY | ControlMask, XK_Up, placedir, {.i = 2}}, // up
|
|
{MODKEY | ControlMask, XK_Down, placedir, {.i = 3}}, // down
|
|
#endif // PLACEDIR_PATCH
|
|
#if SWAPFOCUS_PATCH && PERTAG_PATCH
|
|
{MODKEY, XK_s, swapfocus, {.i = -1}},
|
|
#endif // SWAPFOCUS_PATCH
|
|
#if SWITCHCOL_PATCH
|
|
{MODKEY, XK_v, switchcol, {0}},
|
|
#endif // SWITCHCOL_PATCH
|
|
#if ROTATESTACK_PATCH
|
|
{MODKEY | Mod1Mask, XK_j, rotatestack, {.i = +1}},
|
|
{MODKEY | Mod1Mask, XK_k, rotatestack, {.i = -1}},
|
|
#endif // ROTATESTACK_PATCH
|
|
#if INPLACEROTATE_PATCH
|
|
{MODKEY | Mod1Mask, XK_j, inplacerotate, {.i = +2}}, // same as rotatestack
|
|
{MODKEY | Mod1Mask, XK_k, inplacerotate, {.i = -2}}, // same as reotatestack
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_j, inplacerotate, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_k, inplacerotate, {.i = -1}},
|
|
#endif // INPLACEROTATE_PATCH
|
|
#if PUSH_PATCH || PUSH_NO_MASTER_PATCH
|
|
{MODKEY | ControlMask, XK_j, pushdown, {0}},
|
|
{MODKEY | ControlMask, XK_k, pushup, {0}},
|
|
#endif // PUSH_PATCH / PUSH_NO_MASTER_PATCH
|
|
{MODKEY, XK_i, incnmaster, {.i = +1}},
|
|
{MODKEY, XK_d, incnmaster, {.i = -1}},
|
|
#if FLEXTILE_DELUXE_LAYOUT
|
|
{MODKEY | ControlMask, XK_i, incnstack, {.i = +1}},
|
|
{MODKEY | ControlMask, XK_u, incnstack, {.i = -1}},
|
|
#endif // FLEXTILE_DELUXE_LAYOUT
|
|
{MODKEY, XK_h, setmfact, {.f = -0.05}},
|
|
{MODKEY, XK_l, setmfact, {.f = +0.05}},
|
|
#if CFACTS_PATCH
|
|
{MODKEY | ShiftMask, XK_h, setcfact, {.f = +0.25}},
|
|
{MODKEY | ShiftMask, XK_l, setcfact, {.f = -0.25}},
|
|
{MODKEY | ShiftMask, XK_o, setcfact, {0}},
|
|
#endif // CFACTS_PATCH
|
|
#if ASPECTRESIZE_PATCH
|
|
{MODKEY | ControlMask | ShiftMask, XK_e, aspectresize, {.i = +24}},
|
|
{MODKEY | ControlMask | ShiftMask, XK_r, aspectresize, {.i = -24}},
|
|
#endif // ASPECTRESIZE_PATCH
|
|
#if MOVERESIZE_PATCH
|
|
{MODKEY | Mod1Mask, XK_Down, moveresize, {.v = "0x 25y 0w 0h"}},
|
|
{MODKEY | Mod1Mask, XK_Up, moveresize, {.v = "0x -25y 0w 0h"}},
|
|
{MODKEY | Mod1Mask, XK_Right, moveresize, {.v = "25x 0y 0w 0h"}},
|
|
{MODKEY | Mod1Mask, XK_Left, moveresize, {.v = "-25x 0y 0w 0h"}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_Down, moveresize, {.v = "0x 0y 0w 25h"}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_Up, moveresize, {.v = "0x 0y 0w -25h"}},
|
|
{MODKEY | Mod1Mask | ShiftMask,
|
|
XK_Right,
|
|
moveresize,
|
|
{.v = "0x 0y 25w 0h"}},
|
|
{MODKEY | Mod1Mask | ShiftMask,
|
|
XK_Left,
|
|
moveresize,
|
|
{.v = "0x 0y -25w 0h"}},
|
|
#endif // MOVERESIZE_PATCH
|
|
#if MOVESTACK_PATCH
|
|
{MODKEY | ShiftMask, XK_j, movestack, {.i = +1}},
|
|
{MODKEY | ShiftMask, XK_k, movestack, {.i = -1}},
|
|
#endif // MOVESTACK_PATCH
|
|
#if TRANSFER_PATCH
|
|
{MODKEY, XK_x, transfer, {0}},
|
|
#endif // TRANSFER_PATCH
|
|
#if TRANSFER_ALL_PATCH
|
|
{MODKEY | ControlMask, XK_x, transferall, {0}},
|
|
#endif // TRANSFER_ALL_PATCH
|
|
#if REORGANIZETAGS_PATCH
|
|
{MODKEY | ControlMask, XK_r, reorganizetags, {0}},
|
|
#endif // REORGANIZETAGS_PATCH
|
|
#if DISTRIBUTETAGS_PATCH
|
|
{MODKEY | ControlMask, XK_d, distributetags, {0}},
|
|
#endif // DISTRIBUTETAGS_PATCH
|
|
#if INSETS_PATCH
|
|
{MODKEY | ShiftMask | ControlMask,
|
|
XK_a,
|
|
updateinset,
|
|
{.v = &default_inset}},
|
|
#endif // INSETS_PATCH
|
|
{MODKEY, XK_Return, zoom, {0}},
|
|
#if VANITYGAPS_PATCH
|
|
{MODKEY | Mod1Mask, XK_u, incrgaps, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_u, incrgaps, {.i = -1}},
|
|
{MODKEY | Mod1Mask, XK_i, incrigaps, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_i, incrigaps, {.i = -1}},
|
|
{MODKEY | Mod1Mask, XK_o, incrogaps, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_o, incrogaps, {.i = -1}},
|
|
{MODKEY | Mod1Mask, XK_6, incrihgaps, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_6, incrihgaps, {.i = -1}},
|
|
{MODKEY | Mod1Mask, XK_7, incrivgaps, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_7, incrivgaps, {.i = -1}},
|
|
{MODKEY | Mod1Mask, XK_8, incrohgaps, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_8, incrohgaps, {.i = -1}},
|
|
{MODKEY | Mod1Mask, XK_9, incrovgaps, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_9, incrovgaps, {.i = -1}},
|
|
{MODKEY | Mod1Mask, XK_0, togglegaps, {0}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_0, defaultgaps, {0}},
|
|
#endif // VANITYGAPS_PATCH
|
|
#if ALT_TAB_PATCH
|
|
{Mod1Mask, XK_Tab, alttabstart, {0}},
|
|
#else
|
|
{MODKEY, XK_Tab, view, {0}},
|
|
#endif // ALT_TAB_PATCH
|
|
#if SHIFTTAG_PATCH
|
|
{MODKEY | ShiftMask,
|
|
XK_Left,
|
|
shifttag,
|
|
{.i = -1}}, // note keybinding conflict with focusadjacenttag tagtoleft
|
|
{MODKEY | ShiftMask,
|
|
XK_Right,
|
|
shifttag,
|
|
{.i = +1}}, // note keybinding conflict with focusadjacenttag tagtoright
|
|
#endif // SHIFTTAG_PATCH
|
|
#if SHIFTTAGCLIENTS_PATCH
|
|
{MODKEY | ShiftMask | ControlMask, XK_Left, shifttagclients, {.i = -1}},
|
|
{MODKEY | ShiftMask | ControlMask, XK_Right, shifttagclients, {.i = +1}},
|
|
#endif // SHIFTTAGCLIENTS_PATCH
|
|
#if SHIFTVIEW_PATCH
|
|
{MODKEY | ShiftMask, XK_Tab, shiftview, {.i = -1}},
|
|
{MODKEY | ShiftMask, XK_backslash, shiftview, {.i = +1}},
|
|
#endif // SHIFTVIEW_PATCH
|
|
#if SHIFTVIEW_CLIENTS_PATCH
|
|
{MODKEY | Mod1Mask, XK_Tab, shiftviewclients, {.i = -1}},
|
|
{MODKEY | Mod1Mask, XK_backslash, shiftviewclients, {.i = +1}},
|
|
#endif // SHIFTVIEW_CLIENTS_PATCH
|
|
#if SHIFTBOTH_PATCH
|
|
{MODKEY | ControlMask,
|
|
XK_Left,
|
|
shiftboth,
|
|
{.i = -1}}, // note keybinding conflict with focusadjacenttag
|
|
// tagandviewtoleft placedir
|
|
{MODKEY | ControlMask,
|
|
XK_Right,
|
|
shiftboth,
|
|
{.i = +1}}, // note keybinding conflict with focusadjacenttag
|
|
// tagandviewtoright placedir
|
|
#endif // SHIFTBOTH_PATCH
|
|
#if SHIFTSWAPTAGS_PATCH && SWAPTAGS_PATCH
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_Left, shiftswaptags, {.i = -1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_Right, shiftswaptags, {.i = +1}},
|
|
#endif // SHIFTSWAPTAGS_PATCH
|
|
#if BAR_WINTITLEACTIONS_PATCH
|
|
{MODKEY | ControlMask, XK_z, showhideclient, {0}},
|
|
#endif // BAR_WINTITLEACTIONS_PATCH
|
|
{MODKEY | ShiftMask, XK_c, killclient, {0}},
|
|
{MODKEY, XK_q, killclient, {0}},
|
|
#if KILLUNSEL_PATCH
|
|
{MODKEY | ShiftMask, XK_x, killunsel, {0}},
|
|
#endif // KILLUNSEL_PATCH
|
|
#if SELFRESTART_PATCH
|
|
{MODKEY | ShiftMask, XK_r, self_restart, {0}},
|
|
#endif // SELFRESTART_PATCH
|
|
{MODKEY | ShiftMask, XK_q, quit, {0}},
|
|
#if RESTARTSIG_PATCH
|
|
{MODKEY | ControlMask | ShiftMask, XK_q, quit, {1}},
|
|
#endif // RESTARTSIG_PATCH
|
|
#if FOCUSURGENT_PATCH
|
|
{MODKEY, XK_u, focusurgent, {0}},
|
|
#endif // FOCUSURGENT_PATCH
|
|
#if BAR_HOLDBAR_PATCH
|
|
{0, HOLDKEY, holdbar, {0}},
|
|
#endif // BAR_HOLDBAR_PATCH
|
|
#if WINVIEW_PATCH
|
|
{MODKEY, XK_o, winview, {0}},
|
|
#endif // WINVIEW_PATCH
|
|
#if XRDB_PATCH && !BAR_VTCOLORS_PATCH
|
|
{MODKEY | ShiftMask, XK_F5, xrdb, {.v = NULL}},
|
|
#endif // XRDB_PATCH
|
|
{MODKEY, XK_t, setlayout, {.v = &layouts[0]}},
|
|
{MODKEY, XK_f, setlayout, {.v = &layouts[1]}},
|
|
{MODKEY, XK_m, setlayout, {.v = &layouts[2]}},
|
|
#if COLUMNS_LAYOUT
|
|
{MODKEY, XK_c, setlayout, {.v = &layouts[3]}},
|
|
#endif // COLUMNS_LAYOUT
|
|
#if FLEXTILE_DELUXE_LAYOUT
|
|
{MODKEY | ControlMask,
|
|
XK_t,
|
|
rotatelayoutaxis,
|
|
{.i = +1}}, /* flextile, 1 = layout axis */
|
|
{MODKEY | ControlMask,
|
|
XK_Tab,
|
|
rotatelayoutaxis,
|
|
{.i = +2}}, /* flextile, 2 = master axis */
|
|
{MODKEY | ControlMask | ShiftMask,
|
|
XK_Tab,
|
|
rotatelayoutaxis,
|
|
{.i = +3}}, /* flextile, 3 = stack axis */
|
|
{MODKEY | ControlMask | Mod1Mask,
|
|
XK_Tab,
|
|
rotatelayoutaxis,
|
|
{.i = +4}}, /* flextile, 4 = secondary stack axis */
|
|
{MODKEY | Mod5Mask,
|
|
XK_t,
|
|
rotatelayoutaxis,
|
|
{.i = -1}}, /* flextile, 1 = layout axis */
|
|
{MODKEY | Mod5Mask,
|
|
XK_Tab,
|
|
rotatelayoutaxis,
|
|
{.i = -2}}, /* flextile, 2 = master axis */
|
|
{MODKEY | Mod5Mask | ShiftMask,
|
|
XK_Tab,
|
|
rotatelayoutaxis,
|
|
{.i = -3}}, /* flextile, 3 = stack axis */
|
|
{MODKEY | Mod5Mask | Mod1Mask,
|
|
XK_Tab,
|
|
rotatelayoutaxis,
|
|
{.i = -4}}, /* flextile, 4 = secondary stack axis */
|
|
{MODKEY | ControlMask,
|
|
XK_Return,
|
|
mirrorlayout,
|
|
{0}}, /* flextile, flip master and stack areas */
|
|
#endif // FLEXTILE_DELUXE_LAYOUT
|
|
/*{ MODKEY, XK_space, setlayout, {0}
|
|
},*/
|
|
{MODKEY | ShiftMask, XK_space, togglefloating, {0}},
|
|
#if MAXIMIZE_PATCH
|
|
{MODKEY | ControlMask | ShiftMask, XK_h, togglehorizontalmax, {0}},
|
|
{MODKEY | ControlMask | ShiftMask, XK_l, togglehorizontalmax, {0}},
|
|
{MODKEY | ControlMask | ShiftMask, XK_j, toggleverticalmax, {0}},
|
|
{MODKEY | ControlMask | ShiftMask, XK_k, toggleverticalmax, {0}},
|
|
{MODKEY | ControlMask, XK_m, togglemax, {0}},
|
|
#endif // MAXIMIZE_PATCH
|
|
#if NO_MOD_BUTTONS_PATCH
|
|
{MODKEY | ShiftMask, XK_Escape, togglenomodbuttons, {0}},
|
|
#endif // NO_MOD_BUTTONS_PATCH
|
|
#if RENAMED_SCRATCHPADS_PATCH
|
|
{MODKEY, XK_grave, togglescratch, {.v = scratchpadcmd}},
|
|
{MODKEY | ControlMask, XK_grave, setscratch, {.v = scratchpadcmd}},
|
|
{MODKEY | ShiftMask, XK_grave, removescratch, {.v = scratchpadcmd}},
|
|
#elif SCRATCHPADS_PATCH
|
|
{MODKEY, XK_grave, togglescratch, {.ui = 0}},
|
|
{MODKEY | ControlMask, XK_grave, setscratch, {.ui = 0}},
|
|
{MODKEY | ShiftMask, XK_grave, removescratch, {.ui = 0}},
|
|
#endif // SCRATCHPADS_PATCH | RENAMED_SCRATCHPADS_PATCH
|
|
#if UNFLOATVISIBLE_PATCH
|
|
{MODKEY | Mod1Mask, XK_space, unfloatvisible, {0}},
|
|
{MODKEY | ShiftMask, XK_t, unfloatvisible, {.v = &layouts[0]}},
|
|
#endif // UNFLOATVISIBLE_PATCH
|
|
#if TOGGLEFULLSCREEN_PATCH
|
|
{MODKEY, XK_y, togglefullscreen, {0}},
|
|
#endif // TOGGLEFULLSCREEN_PATCH
|
|
#if !FAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
|
|
{MODKEY | ShiftMask, XK_y, togglefakefullscreen, {0}},
|
|
#endif // FAKEFULLSCREEN_CLIENT_PATCH
|
|
#if FULLSCREEN_PATCH
|
|
{MODKEY | ShiftMask, XK_f, fullscreen, {0}},
|
|
#endif // FULLSCREEN_PATCH
|
|
#if STICKY_PATCH
|
|
{MODKEY | ShiftMask, XK_s, togglesticky, {0}},
|
|
#endif // STICKY_PATCH
|
|
#if SCRATCHPAD_ALT_1_PATCH
|
|
{MODKEY, XK_minus, scratchpad_show, {0}},
|
|
{MODKEY | ShiftMask, XK_minus, scratchpad_hide, {0}},
|
|
{MODKEY, XK_equal, scratchpad_remove, {0}},
|
|
#elif SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
|
|
{MODKEY, XK_0, view, {.ui = ~SPTAGMASK}},
|
|
{MODKEY | ShiftMask, XK_0, tag, {.ui = ~SPTAGMASK}},
|
|
#else
|
|
{MODKEY, XK_0, view, {.ui = ~0}},
|
|
{MODKEY | ShiftMask, XK_0, tag, {.ui = ~0}},
|
|
#endif // SCRATCHPAD_ALT_1_PATCH
|
|
{MODKEY, XK_comma, focusmon, {.i = -1}},
|
|
{MODKEY, XK_period, focusmon, {.i = +1}},
|
|
{MODKEY | ShiftMask, XK_comma, tagmon, {.i = -1}},
|
|
{MODKEY | ShiftMask, XK_period, tagmon, {.i = +1}},
|
|
#if FOCUSADJACENTTAG_PATCH
|
|
{MODKEY,
|
|
XK_Left,
|
|
viewtoleft,
|
|
{0}}, // note keybinding conflict with focusdir
|
|
{MODKEY,
|
|
XK_Right,
|
|
viewtoright,
|
|
{0}}, // note keybinding conflict with focusdir
|
|
{MODKEY | ShiftMask,
|
|
XK_Left,
|
|
tagtoleft,
|
|
{0}}, // note keybinding conflict with shifttag
|
|
{MODKEY | ShiftMask,
|
|
XK_Right,
|
|
tagtoright,
|
|
{0}}, // note keybinding conflict with shifttag
|
|
{MODKEY | ControlMask,
|
|
XK_Left,
|
|
tagandviewtoleft,
|
|
{0}}, // note keybinding conflict with placedir
|
|
{MODKEY | ControlMask,
|
|
XK_Right,
|
|
tagandviewtoright,
|
|
{0}}, // note keybinding conflict with placedir
|
|
#endif // FOCUSADJACENTTAG_PATCH
|
|
#if TAGALL_PATCH
|
|
{MODKEY | ShiftMask, XK_F1, tagall, {.v = "F1"}},
|
|
{MODKEY | ShiftMask, XK_F2, tagall, {.v = "F2"}},
|
|
{MODKEY | ShiftMask, XK_F3, tagall, {.v = "F3"}},
|
|
{MODKEY | ShiftMask, XK_F4, tagall, {.v = "F4"}},
|
|
{MODKEY | ShiftMask, XK_F5, tagall, {.v = "F5"}},
|
|
{MODKEY | ShiftMask, XK_F6, tagall, {.v = "F6"}},
|
|
{MODKEY | ShiftMask, XK_F7, tagall, {.v = "F7"}},
|
|
{MODKEY | ShiftMask, XK_F8, tagall, {.v = "F8"}},
|
|
{MODKEY | ShiftMask, XK_F9, tagall, {.v = "F9"}},
|
|
{MODKEY | ControlMask, XK_F1, tagall, {.v = "1"}},
|
|
{MODKEY | ControlMask, XK_F2, tagall, {.v = "2"}},
|
|
{MODKEY | ControlMask, XK_F3, tagall, {.v = "3"}},
|
|
{MODKEY | ControlMask, XK_F4, tagall, {.v = "4"}},
|
|
{MODKEY | ControlMask, XK_F5, tagall, {.v = "5"}},
|
|
{MODKEY | ControlMask, XK_F6, tagall, {.v = "6"}},
|
|
{MODKEY | ControlMask, XK_F7, tagall, {.v = "7"}},
|
|
{MODKEY | ControlMask, XK_F8, tagall, {.v = "8"}},
|
|
{MODKEY | ControlMask, XK_F9, tagall, {.v = "9"}},
|
|
#endif // TAGALL_PATCH
|
|
#if TAGALLMON_PATCH
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_comma, tagallmon, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ShiftMask, XK_period, tagallmon, {.i = -1}},
|
|
#endif // TAGALLMON_PATCH
|
|
#if TAGSWAPMON_PATCH
|
|
{MODKEY | Mod1Mask | ControlMask, XK_comma, tagswapmon, {.i = +1}},
|
|
{MODKEY | Mod1Mask | ControlMask, XK_period, tagswapmon, {.i = -1}},
|
|
#endif // TAGSWAPMON_PATCH
|
|
#if BAR_ALTERNATIVE_TAGS_PATCH
|
|
{MODKEY, XK_n, togglealttag, {0}},
|
|
#endif // BAR_ALTERNATIVE_TAGS_PATCH
|
|
#if NAMETAG_PATCH
|
|
{MODKEY | ShiftMask, XK_n, nametag, {0}},
|
|
#endif // NAMETAG_PATCH
|
|
#if BAR_TAGGRID_PATCH
|
|
{MODKEY | ControlMask,
|
|
XK_Up,
|
|
switchtag,
|
|
{.ui = SWITCHTAG_UP | SWITCHTAG_VIEW}},
|
|
{MODKEY | ControlMask,
|
|
XK_Down,
|
|
switchtag,
|
|
{.ui = SWITCHTAG_DOWN | SWITCHTAG_VIEW}},
|
|
{MODKEY | ControlMask,
|
|
XK_Right,
|
|
switchtag,
|
|
{.ui = SWITCHTAG_RIGHT |
|
|
SWITCHTAG_VIEW}}, // note keybinding conflict with placedir
|
|
{MODKEY | ControlMask,
|
|
XK_Left,
|
|
switchtag,
|
|
{.ui = SWITCHTAG_LEFT |
|
|
SWITCHTAG_VIEW}}, // note keybinding conflict with placedir
|
|
{MODKEY | Mod1Mask,
|
|
XK_Up,
|
|
switchtag,
|
|
{.ui = SWITCHTAG_UP | SWITCHTAG_TAG | SWITCHTAG_VIEW}},
|
|
{MODKEY | Mod1Mask,
|
|
XK_Down,
|
|
switchtag,
|
|
{.ui = SWITCHTAG_DOWN | SWITCHTAG_TAG | SWITCHTAG_VIEW}},
|
|
{MODKEY | Mod1Mask,
|
|
XK_Right,
|
|
switchtag,
|
|
{.ui = SWITCHTAG_RIGHT | SWITCHTAG_TAG | SWITCHTAG_VIEW}},
|
|
{MODKEY | Mod1Mask,
|
|
XK_Left,
|
|
switchtag,
|
|
{.ui = SWITCHTAG_LEFT | SWITCHTAG_TAG | SWITCHTAG_VIEW}},
|
|
#endif // BAR_TAGGRID_PATCH
|
|
#if MOVEPLACE_PATCH
|
|
{MODKEY, XK_KP_7, moveplace, {.ui = WIN_NW}}, /* XK_KP_Home, */
|
|
{MODKEY, XK_KP_8, moveplace, {.ui = WIN_N}}, /* XK_KP_Up, */
|
|
{MODKEY, XK_KP_9, moveplace, {.ui = WIN_NE}}, /* XK_KP_Prior, */
|
|
{MODKEY, XK_KP_4, moveplace, {.ui = WIN_W}}, /* XK_KP_Left, */
|
|
{MODKEY, XK_KP_5, moveplace, {.ui = WIN_C}}, /* XK_KP_Begin, */
|
|
{MODKEY, XK_KP_6, moveplace, {.ui = WIN_E}}, /* XK_KP_Right, */
|
|
{MODKEY, XK_KP_1, moveplace, {.ui = WIN_SW}}, /* XK_KP_End, */
|
|
{MODKEY, XK_KP_2, moveplace, {.ui = WIN_S}}, /* XK_KP_Down, */
|
|
{MODKEY, XK_KP_3, moveplace, {.ui = WIN_SE}}, /* XK_KP_Next, */
|
|
#endif // MOVEPLACE_PATCH
|
|
#if EXRESIZE_PATCH
|
|
{MODKEY, XK_KP_7, explace, {.ui = EX_NW}}, /* XK_KP_Home, */
|
|
{MODKEY, XK_KP_8, explace, {.ui = EX_N}}, /* XK_KP_Up, */
|
|
{MODKEY, XK_KP_9, explace, {.ui = EX_NE}}, /* XK_KP_Prior, */
|
|
{MODKEY, XK_KP_4, explace, {.ui = EX_W}}, /* XK_KP_Left, */
|
|
{MODKEY, XK_KP_5, explace, {.ui = EX_C}}, /* XK_KP_Begin, */
|
|
{MODKEY, XK_KP_6, explace, {.ui = EX_E}}, /* XK_KP_Right, */
|
|
{MODKEY, XK_KP_1, explace, {.ui = EX_SW}}, /* XK_KP_End, */
|
|
{MODKEY, XK_KP_2, explace, {.ui = EX_S}}, /* XK_KP_Down, */
|
|
{MODKEY, XK_KP_3, explace, {.ui = EX_SE}}, /* XK_KP_Next, */
|
|
|
|
{MODKEY | ShiftMask,
|
|
XK_KP_8,
|
|
exresize,
|
|
{.v = (int[]){0, 25}}}, /* XK_KP_Up, */
|
|
{MODKEY | ShiftMask,
|
|
XK_KP_2,
|
|
exresize,
|
|
{.v = (int[]){0, -25}}}, /* XK_KP_Down, */
|
|
{MODKEY | ShiftMask,
|
|
XK_KP_6,
|
|
exresize,
|
|
{.v = (int[]){25, 0}}}, /* XK_KP_Right, */
|
|
{MODKEY | ShiftMask,
|
|
XK_KP_4,
|
|
exresize,
|
|
{.v = (int[]){-25, 0}}}, /* XK_KP_Left, */
|
|
{MODKEY | ShiftMask,
|
|
XK_KP_5,
|
|
exresize,
|
|
{.v = (int[]){25, 25}}}, /* XK_KP_Begin, */
|
|
{MODKEY | ShiftMask | ControlMask,
|
|
XK_KP_5,
|
|
exresize,
|
|
{.v = (int[]){-25, -25}}}, /* XK_KP_Begin, */
|
|
|
|
{MODKEY | ControlMask,
|
|
XK_KP_6,
|
|
togglehorizontalexpand,
|
|
{.i = +1}}, /* XK_KP_Right, */
|
|
{MODKEY | ControlMask,
|
|
XK_KP_3,
|
|
togglehorizontalexpand,
|
|
{.i = 0}}, /* XK_KP_Next, */
|
|
{MODKEY | ControlMask,
|
|
XK_KP_4,
|
|
togglehorizontalexpand,
|
|
{.i = -1}}, /* XK_KP_Left, */
|
|
{MODKEY | ControlMask,
|
|
XK_KP_8,
|
|
toggleverticalexpand,
|
|
{.i = +1}}, /* XK_KP_Up, */
|
|
{MODKEY | ControlMask,
|
|
XK_KP_1,
|
|
toggleverticalexpand,
|
|
{.i = 0}}, /* XK_KP_End, */
|
|
{MODKEY | ControlMask,
|
|
XK_KP_2,
|
|
toggleverticalexpand,
|
|
{.i = -1}}, /* XK_KP_Down, */
|
|
{MODKEY | ControlMask,
|
|
XK_KP_9,
|
|
togglemaximize,
|
|
{.i = -1}}, /* XK_KP_Prior, */
|
|
{MODKEY | ControlMask,
|
|
XK_KP_7,
|
|
togglemaximize,
|
|
{.i = +1}}, /* XK_KP_Home, */
|
|
{MODKEY | ControlMask,
|
|
XK_KP_5,
|
|
togglemaximize,
|
|
{.i = 0}}, /* XK_KP_Begin, */
|
|
#endif // EXRESIZE_PATCH
|
|
#if FLOATPOS_PATCH
|
|
/* Note that due to key limitations the below example kybindings are defined
|
|
* with a Mod3Mask, which is not always readily available. Refer to the
|
|
* patch wiki for more details. */
|
|
/* Client position is limited to monitor window area */
|
|
{Mod3Mask, XK_u, floatpos, {.v = "-26x -26y"}}, // ↖
|
|
{Mod3Mask, XK_i, floatpos, {.v = " 0x -26y"}}, // ↑
|
|
{Mod3Mask, XK_o, floatpos, {.v = " 26x -26y"}}, // ↗
|
|
{Mod3Mask, XK_j, floatpos, {.v = "-26x 0y"}}, // ←
|
|
{Mod3Mask, XK_l, floatpos, {.v = " 26x 0y"}}, // →
|
|
{Mod3Mask, XK_m, floatpos, {.v = "-26x 26y"}}, // ↙
|
|
{Mod3Mask, XK_comma, floatpos, {.v = " 0x 26y"}}, // ↓
|
|
{Mod3Mask, XK_period, floatpos, {.v = " 26x 26y"}}, // ↘
|
|
/* Absolute positioning (allows moving windows between monitors) */
|
|
{Mod3Mask | ControlMask, XK_u, floatpos, {.v = "-26a -26a"}}, // ↖
|
|
{Mod3Mask | ControlMask, XK_i, floatpos, {.v = " 0a -26a"}}, // ↑
|
|
{Mod3Mask | ControlMask, XK_o, floatpos, {.v = " 26a -26a"}}, // ↗
|
|
{Mod3Mask | ControlMask, XK_j, floatpos, {.v = "-26a 0a"}}, // ←
|
|
{Mod3Mask | ControlMask, XK_l, floatpos, {.v = " 26a 0a"}}, // →
|
|
{Mod3Mask | ControlMask, XK_m, floatpos, {.v = "-26a 26a"}}, // ↙
|
|
{Mod3Mask | ControlMask, XK_comma, floatpos, {.v = " 0a 26a"}}, // ↓
|
|
{Mod3Mask | ControlMask, XK_period, floatpos, {.v = " 26a 26a"}}, // ↘
|
|
/* Resize client, client center position is fixed which means that client
|
|
expands in all directions */
|
|
{Mod3Mask | ShiftMask, XK_u, floatpos, {.v = "-26w -26h"}}, // ↖
|
|
{Mod3Mask | ShiftMask, XK_i, floatpos, {.v = " 0w -26h"}}, // ↑
|
|
{Mod3Mask | ShiftMask, XK_o, floatpos, {.v = " 26w -26h"}}, // ↗
|
|
{Mod3Mask | ShiftMask, XK_j, floatpos, {.v = "-26w 0h"}}, // ←
|
|
{Mod3Mask | ShiftMask, XK_k, floatpos, {.v = "800W 800H"}}, // ·
|
|
{Mod3Mask | ShiftMask, XK_l, floatpos, {.v = " 26w 0h"}}, // →
|
|
{Mod3Mask | ShiftMask, XK_m, floatpos, {.v = "-26w 26h"}}, // ↙
|
|
{Mod3Mask | ShiftMask, XK_comma, floatpos, {.v = " 0w 26h"}}, // ↓
|
|
{Mod3Mask | ShiftMask, XK_period, floatpos, {.v = " 26w 26h"}}, // ↘
|
|
/* Client is positioned in a floating grid, movement is relative to client's
|
|
current position */
|
|
{Mod3Mask | Mod1Mask, XK_u, floatpos, {.v = "-1p -1p"}}, // ↖
|
|
{Mod3Mask | Mod1Mask, XK_i, floatpos, {.v = " 0p -1p"}}, // ↑
|
|
{Mod3Mask | Mod1Mask, XK_o, floatpos, {.v = " 1p -1p"}}, // ↗
|
|
{Mod3Mask | Mod1Mask, XK_j, floatpos, {.v = "-1p 0p"}}, // ←
|
|
{Mod3Mask | Mod1Mask, XK_k, floatpos, {.v = " 0p 0p"}}, // ·
|
|
{Mod3Mask | Mod1Mask, XK_l, floatpos, {.v = " 1p 0p"}}, // →
|
|
{Mod3Mask | Mod1Mask, XK_m, floatpos, {.v = "-1p 1p"}}, // ↙
|
|
{Mod3Mask | Mod1Mask, XK_comma, floatpos, {.v = " 0p 1p"}}, // ↓
|
|
{Mod3Mask | Mod1Mask, XK_period, floatpos, {.v = " 1p 1p"}}, // ↘
|
|
#endif // FLOATPOS_PATCH
|
|
#if SETBORDERPX_PATCH
|
|
{MODKEY | ControlMask, XK_minus, setborderpx, {.i = -1}},
|
|
{MODKEY | ControlMask, XK_plus, setborderpx, {.i = +1}},
|
|
{MODKEY | ControlMask, XK_numbersign, setborderpx, {.i = 0}},
|
|
#endif // SETBORDERPX_PATCH
|
|
#if CYCLELAYOUTS_PATCH
|
|
{MODKEY | ControlMask, XK_comma, cyclelayout, {.i = -1}},
|
|
{MODKEY | ControlMask, XK_period, cyclelayout, {.i = +1}},
|
|
{MODKEY, XK_grave, cyclelayout, {.i = +1}},
|
|
{MODKEY | ShiftMask, XK_grave, cyclelayout, {.i = -1}},
|
|
#endif // CYCLELAYOUTS_PATCH
|
|
#if MPDCONTROL_PATCH
|
|
{MODKEY, XK_F1, mpdchange, {.i = -1}},
|
|
{MODKEY, XK_F2, mpdchange, {.i = +1}},
|
|
{MODKEY, XK_Escape, mpdcontrol, {0}},
|
|
#endif // MPDCONTROL_PATCH
|
|
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)};
|
|
|
|
#if KEYMODES_PATCH
|
|
static const Key cmdkeys[] = {
|
|
/* modifier keys function argument */
|
|
{0, XK_Escape, clearcmd, {0}},
|
|
{ControlMask, XK_c, clearcmd, {0}},
|
|
{0, XK_i, setkeymode, {.ui = INSERTMODE}},
|
|
};
|
|
|
|
static const Command commands[] = {
|
|
/* modifier (4 keys) keysyms (4 keys) function
|
|
argument */
|
|
{{ControlMask, ShiftMask, 0, 0},
|
|
{XK_w, XK_h, 0, 0},
|
|
setlayout,
|
|
{.v = &layouts[0]}},
|
|
{{ControlMask, 0, 0, 0}, {XK_w, XK_o, 0, 0}, setlayout, {.v = &layouts[2]}},
|
|
{{ControlMask, ShiftMask, 0, 0}, {XK_w, XK_o, 0, 0}, onlyclient, {0}},
|
|
{{ControlMask, 0, 0, 0}, {XK_w, XK_v, 0, 0}, setlayout, {.v = &layouts[0]}},
|
|
{{ControlMask, 0, 0, 0}, {XK_w, XK_less, 0, 0}, setmfact, {.f = -0.05}},
|
|
{{ControlMask, ShiftMask, 0, 0},
|
|
{XK_w, XK_less, 0, 0},
|
|
setmfact,
|
|
{.f = +0.05}},
|
|
{{ControlMask, ShiftMask, 0, 0},
|
|
{XK_w, XK_0, 0, 0},
|
|
setmfact,
|
|
{.f = +1.50}},
|
|
{{ShiftMask, 0, 0, 0}, {XK_period, XK_e, 0, 0}, spawn, {.v = dmenucmd}},
|
|
{{ShiftMask, 0, 0, 0}, {XK_period, XK_o, 0, 0}, spawn, {.v = dmenucmd}},
|
|
{{ShiftMask, 0, 0, 0}, {XK_period, XK_q, XK_Return, 0}, quit, {0}},
|
|
{{ShiftMask, 0, 0, 0}, {XK_period, XK_b, XK_d, XK_Return}, killclient, {0}},
|
|
{{ShiftMask, 0, 0, 0},
|
|
{XK_period, XK_b, XK_n, XK_Return},
|
|
focusstack,
|
|
{.i = +1}},
|
|
{{ShiftMask, 0, ShiftMask, 0},
|
|
{XK_period, XK_b, XK_n, XK_Return},
|
|
focusstack,
|
|
{.i = -1}},
|
|
};
|
|
#endif // KEYMODES_PATCH
|
|
|
|
// Mouse: Logitech G502 Hero
|
|
// Buttons 1-5 defined in library already
|
|
// Button1 // left click
|
|
// Button2 // middle click
|
|
// Button3 // right click
|
|
// Button4 // scroll wheel up
|
|
// Button5 // scroll wheel down
|
|
#define Button6 6 // scroll wheel left
|
|
#define Button7 7 // scroll wheel right
|
|
#define Button8 8 // back button
|
|
#define Button9 9 // forward button
|
|
#define Button10 10 // undefined
|
|
#define Button11 11 // extra thumb button
|
|
#define Button12 12 // top middle button
|
|
#define Button13 13 // left bottom extra button
|
|
#define Button14 14 // left top extra button
|
|
|
|
/* button definitions */
|
|
#if STATUSBUTTON_PATCH
|
|
/* click can be ClkButton, ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
|
|
* ClkClientWin, or ClkRootWin */
|
|
#else
|
|
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
|
|
* ClkClientWin, or ClkRootWin */
|
|
#endif //
|
|
static const Button buttons[] = {
|
|
/* click event mask button function
|
|
argument */
|
|
{ClkClientWin, 0, Button11, spawn, {.v = mutemic}},
|
|
{ClkClientWin, 0, Button12, spawn, {.v = termcmd}},
|
|
{ClkClientWin, 0, Button13, spawn, {.v = downvol}},
|
|
{ClkClientWin, 0, Button14, spawn, {.v = upvol}},
|
|
#if BAR_STATUSBUTTON_PATCH
|
|
{ClkButton, 0, Button1, spawn, {.v = dmenucmd}},
|
|
#endif // BAR_STATUSBUTTON_PATCH
|
|
{ClkLtSymbol, 0, Button1, setlayout, {0}},
|
|
#if BAR_LAYOUTMENU_PATCH
|
|
{ClkLtSymbol, 0, Button3, layoutmenu, {0}},
|
|
#else
|
|
{ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]}},
|
|
#endif // BAR_LAYOUTMENU_PATCH
|
|
#if BAR_WINTITLEACTIONS_PATCH
|
|
{ClkWinTitle, 0, Button1, togglewin, {0}},
|
|
{ClkWinTitle, 0, Button3, showhideclient, {0}},
|
|
#endif // BAR_WINTITLEACTIONS_PATCH
|
|
{ClkWinTitle, 0, Button2, zoom, {0}},
|
|
#if BAR_STATUSCMD_PATCH && BAR_DWMBLOCKS_PATCH
|
|
{ClkStatusText, 0, Button1, sigstatusbar, {.i = 1}},
|
|
{ClkStatusText, 0, Button2, sigstatusbar, {.i = 2}},
|
|
{ClkStatusText, 0, Button3, sigstatusbar, {.i = 3}},
|
|
#elif BAR_STATUSCMD_PATCH
|
|
{ClkStatusText, 0, Button1, spawn, {.v = statuscmd}},
|
|
{ClkStatusText, 0, Button2, spawn, {.v = statuscmd}},
|
|
{ClkStatusText, 0, Button3, spawn, {.v = statuscmd}},
|
|
#else
|
|
{ClkStatusText, 0, Button2, spawn, {.v = termcmd}},
|
|
#endif // BAR_STATUSCMD_PATCH
|
|
#if PLACEMOUSE_PATCH
|
|
/* placemouse options, choose which feels more natural:
|
|
* 0 - tiled position is relative to mouse cursor
|
|
* 1 - tiled postiion is relative to window center
|
|
* 2 - mouse pointer warps to window center
|
|
*
|
|
* The moveorplace uses movemouse or placemouse depending on the floating
|
|
* state of the selected client. Set up individual keybindings for the two
|
|
* if you want to control these separately (i.e. to retain the feature to
|
|
* move a tiled window into a floating position).
|
|
*/
|
|
{ClkClientWin, MODKEY, Button1, moveorplace, {.i = 1}},
|
|
#else
|
|
{ClkClientWin, MODKEY, Button1, movemouse, {0}},
|
|
#endif // PLACEMOUSE_PATCH
|
|
{ClkClientWin, MODKEY, Button2, togglefloating, {0}},
|
|
{ClkClientWin, MODKEY, Button3, resizemouse, {0}},
|
|
#if TAPRESIZE_PATCH
|
|
{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]}},
|
|
#endif // TAPRESIZE_PATCH
|
|
#if DRAGCFACT_PATCH && CFACTS_PATCH
|
|
{ClkClientWin, MODKEY | ShiftMask, Button3, dragcfact, {0}},
|
|
#endif // DRAGCFACT_PATCH
|
|
#if DRAGMFACT_PATCH
|
|
{ClkClientWin, MODKEY | ShiftMask, Button1, dragmfact, {0}},
|
|
#endif // DRAGMFACT_PATCH
|
|
{ClkTagBar, 0, Button1, view, {0}},
|
|
{ClkTagBar, 0, Button3, toggleview, {0}},
|
|
{ClkTagBar, MODKEY, Button1, tag, {0}},
|
|
{ClkTagBar, MODKEY, Button3, toggletag, {0}},
|
|
#if TAB_PATCH
|
|
{ClkTabBar, 0, Button1, focuswin, {0}},
|
|
#endif // TAB_PATCH
|
|
};
|
|
|
|
#if DWMC_PATCH
|
|
/* signal definitions */
|
|
/* signum must be greater than 0 */
|
|
/* trigger signals using `xsetroot -name "fsignal:<signame> [<type> <value>]"`
|
|
*/
|
|
static const Signal signals[] = {
|
|
/* signum function */
|
|
{"focusstack", focusstack},
|
|
{"setmfact", setmfact},
|
|
{"togglebar", togglebar},
|
|
#if TOGGLETOPBAR_PATCH
|
|
{"toggletopbar", toggletopbar},
|
|
#endif // TOGGLETOPBAR_PATCH
|
|
{"incnmaster", incnmaster},
|
|
{"togglefloating", togglefloating},
|
|
{"focusmon", focusmon},
|
|
#if STACKER_PATCH
|
|
{"pushstack", pushstack},
|
|
#endif // STACKER_PATCH
|
|
#if FLOATPOS_PATCH
|
|
{"floatpos", floatpos},
|
|
#endif // FLOATPOS_PATCH
|
|
#if FOCUSURGENT_PATCH
|
|
{"focusurgent", focusurgent},
|
|
#endif // FOCUSURGENT_PATCH
|
|
#if FOCUSADJACENTTAG_PATCH
|
|
{"viewtoleft", viewtoleft},
|
|
{"viewtoright", viewtoright},
|
|
{"tagtoleft", tagtoleft},
|
|
{"tagtoright", tagtoright},
|
|
{"tagandviewtoleft", tagandviewtoleft},
|
|
{"tagandviewtoright", tagandviewtoright},
|
|
#endif // FOCUSADJACENTTAG_PATCH
|
|
#if SWAPFOCUS_PATCH && PERTAG_PATCH
|
|
{"swapfocus", swapfocus},
|
|
#endif // SWAPFOCUS_PATCH
|
|
#if SWITCHCOL_PATCH
|
|
{"switchcol", switchcol},
|
|
#endif // SWITCHCOL_PATCH
|
|
#if ROTATESTACK_PATCH
|
|
{"rotatestack", rotatestack},
|
|
#endif // ROTATESTACK_PATCH
|
|
#if INPLACEROTATE_PATCH
|
|
{"inplacerotate", inplacerotate},
|
|
#endif // INPLACEROTATE_PATCH
|
|
#if PUSH_PATCH || PUSH_NO_MASTER_PATCH
|
|
{"pushdown", pushdown},
|
|
{"pushup", pushup},
|
|
#endif // PUSH_PATCH / PUSH_NO_MASTER_PATCH
|
|
#if FLEXTILE_DELUXE_LAYOUT
|
|
{"incnstack", incnstack},
|
|
{"rotatelayoutaxis", rotatelayoutaxis},
|
|
{"setlayoutaxisex", setlayoutaxisex},
|
|
{"mirrorlayout", mirrorlayout},
|
|
#endif // FLEXTILE_DELUXE_LAYOUT
|
|
#if CFACTS_PATCH
|
|
{"setcfact", setcfact},
|
|
#endif // CFACTS_PATCH
|
|
#if MOVEPLACE_PATCH
|
|
{"moveplace", moveplace},
|
|
#endif // MOVEPLACE_PATCH
|
|
#if NAMETAG_PATCH
|
|
{"nametag", nametag},
|
|
#endif // NAMETAG_PATCH
|
|
#if EXRESIZE_PATCH
|
|
{"explace", explace},
|
|
{"togglehorizontalexpand", togglehorizontalexpand},
|
|
{"toggleverticalexpand", toggleverticalexpand},
|
|
{"togglemaximize", togglemaximize},
|
|
#endif // EXRESIZE_PATCH
|
|
#if KEYMODES_PATCH
|
|
{"setkeymode", setkeymode},
|
|
#endif // KEYMODES_PATCH
|
|
#if TRANSFER_PATCH
|
|
{"transfer", transfer},
|
|
#endif // TRANSFER_PATCH
|
|
#if TRANSFER_ALL_PATCH
|
|
{"transferall", transferall},
|
|
#endif // TRANSFER_ALL_PATCH
|
|
{"tagmon", tagmon},
|
|
{"zoom", zoom},
|
|
#if VANITYGAPS_PATCH
|
|
{"incrgaps", incrgaps},
|
|
{"incrigaps", incrigaps},
|
|
{"incrogaps", incrogaps},
|
|
{"incrihgaps", incrihgaps},
|
|
{"incrivgaps", incrivgaps},
|
|
{"incrohgaps", incrohgaps},
|
|
{"incrovgaps", incrovgaps},
|
|
{"togglegaps", togglegaps},
|
|
{"defaultgaps", defaultgaps},
|
|
{"setgaps", setgapsex},
|
|
#endif // VANITYGAPS_PATCH
|
|
{"view", view},
|
|
{"viewall", viewallex},
|
|
{"viewex", viewex},
|
|
{"toggleview", toggleview},
|
|
#if BAR_WINTITLEACTIONS_PATCH
|
|
{"showhideclient", showhideclient},
|
|
#endif // BAR_WINTITLEACTIONS_PATCH
|
|
#if SHIFTBOTH_PATCH
|
|
{"shiftboth", shiftboth},
|
|
#endif // SHIFTBOTH_PATCH
|
|
#if SHIFTTAG_PATCH
|
|
{"shifttag", shifttag},
|
|
#endif // SHIFTTAG_PATCH
|
|
#if SHIFTTAGCLIENTS_PATCH
|
|
{"shifttagclients", shifttagclients},
|
|
#endif // SHIFTTAGCLIENTS_PATCH
|
|
#if SHIFTVIEW_PATCH
|
|
{"shiftview", shiftview},
|
|
#endif // SHIFTVIEW_PATCH
|
|
#if SHIFTVIEW_CLIENTS_PATCH
|
|
{"shiftviewclients", shiftviewclients},
|
|
#endif // SHIFTVIEW_CLIENTS_PATCH
|
|
#if SHIFTSWAPTAGS_PATCH && SWAPTAGS_PATCH
|
|
{"shiftswaptags", shiftswaptags},
|
|
#endif // SHIFTSWAPTAGS_PATCH
|
|
#if SELFRESTART_PATCH
|
|
{"self_restart", self_restart},
|
|
#endif // SELFRESTART_PATCH
|
|
#if BAR_TAGGRID_PATCH
|
|
{"switchtag", switchtag},
|
|
#endif // BAR_TAGGRID_PATCH
|
|
#if STICKY_PATCH
|
|
{"togglesticky", togglesticky},
|
|
#endif // STICKY_PATCH
|
|
#if SETBORDERPX_PATCH
|
|
{"setborderpx", setborderpx},
|
|
#endif // SETBORDERPX_PATCH
|
|
#if CYCLELAYOUTS_PATCH
|
|
{"cyclelayout", cyclelayout},
|
|
#endif // CYCLELAYOUTS_PATCH
|
|
#if MPDCONTROL_PATCH
|
|
{"mpdchange", mpdchange},
|
|
{"mpdcontrol", mpdcontrol},
|
|
#endif // MPDCONTROL_PATCH
|
|
{"toggleviewex", toggleviewex},
|
|
{"tag", tag},
|
|
{"tagall", tagallex},
|
|
{"tagex", tagex},
|
|
{"toggletag", toggletag},
|
|
{"toggletagex", toggletagex},
|
|
#if TAGALLMON_PATCH
|
|
{"tagallmon", tagallmon},
|
|
#endif // TAGALLMON_PATCH
|
|
#if TAGSWAPMON_PATCH
|
|
{"tagswapmon", tagswapmon},
|
|
#endif // TAGSWAPMON_PATCH
|
|
#if BAR_ALTERNATIVE_TAGS_PATCH
|
|
{"togglealttag", togglealttag},
|
|
#endif // BAR_ALTERNATIVE_TAGS_PATCH
|
|
#if TOGGLEFULLSCREEN_PATCH
|
|
{"togglefullscreen", togglefullscreen},
|
|
#endif // TOGGLEFULLSCREEN_PATCH
|
|
#if !FAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
|
|
{"togglefakefullscreen", togglefakefullscreen},
|
|
#endif // FAKEFULLSCREEN_CLIENT_PATCH
|
|
#if FULLSCREEN_PATCH
|
|
{"fullscreen", fullscreen},
|
|
#endif // FULLSCREEN_PATCH
|
|
#if MAXIMIZE_PATCH
|
|
{"togglehorizontalmax", togglehorizontalmax},
|
|
{"toggleverticalmax", toggleverticalmax},
|
|
{"togglemax", togglemax},
|
|
#endif // MAXIMIZE_PATCH
|
|
#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
|
|
{"togglescratch", togglescratch},
|
|
#endif // SCRATCHPADS_PATCH
|
|
#if UNFLOATVISIBLE_PATCH
|
|
{"unfloatvisible", unfloatvisible},
|
|
#endif // UNFLOATVISIBLE_PATCH
|
|
{"killclient", killclient},
|
|
#if WINVIEW_PATCH
|
|
{"winview", winview},
|
|
#endif // WINVIEW_PATCH
|
|
#if XRDB_PATCH && !BAR_VTCOLORS_PATCH
|
|
{"xrdb", xrdb},
|
|
#endif // XRDB_PATCH
|
|
#if TAGOTHERMONITOR_PATCH
|
|
{"tagnextmonex", tagnextmonex},
|
|
{"tagprevmonex", tagprevmonex},
|
|
#endif // TAGOTHERMONITOR_PATCH
|
|
{"quit", quit},
|
|
{"setlayout", setlayout},
|
|
{"setlayoutex", setlayoutex},
|
|
};
|
|
#elif FSIGNAL_PATCH
|
|
/* signal definitions */
|
|
/* signum must be greater than 0 */
|
|
/* trigger signals using `xsetroot -name "fsignal:<signum>"` */
|
|
static Signal signals[] = {
|
|
/* signum function argument */
|
|
{1, setlayout, {.v = 0}},
|
|
};
|
|
#endif // DWMC_PATCH
|
|
|
|
#if IPC_PATCH
|
|
static const char *ipcsockpath = "/tmp/dwm.sock";
|
|
static IPCCommand ipccommands[] = {
|
|
IPCCOMMAND(focusmon, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(focusstack, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(incnmaster, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(killclient, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(quit, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(setlayoutsafe, 1, {ARG_TYPE_PTR}),
|
|
IPCCOMMAND(setmfact, 1, {ARG_TYPE_FLOAT}),
|
|
IPCCOMMAND(setstatus, 1, {ARG_TYPE_STR}),
|
|
IPCCOMMAND(tag, 1, {ARG_TYPE_UINT}),
|
|
IPCCOMMAND(tagmon, 1, {ARG_TYPE_UINT}),
|
|
IPCCOMMAND(togglebar, 1, {ARG_TYPE_NONE}),
|
|
#if TOGGLETOPBAR_PATCH
|
|
IPCCOMMAND(toggletopbar, 1, {ARG_TYPE_NONE}),
|
|
#endif // TOGGLETOPBAR_PATCH
|
|
IPCCOMMAND(togglefloating, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(toggletag, 1, {ARG_TYPE_UINT}),
|
|
IPCCOMMAND(toggleview, 1, {ARG_TYPE_UINT}),
|
|
IPCCOMMAND(view, 1, {ARG_TYPE_UINT}),
|
|
IPCCOMMAND(zoom, 1, {ARG_TYPE_NONE}),
|
|
#if BAR_ALTERNATIVE_TAGS_PATCH
|
|
IPCCOMMAND(togglealttag, 1, {ARG_TYPE_NONE}),
|
|
#endif // BAR_ALTERNATIVE_TAGS_PATCH
|
|
#if BAR_TAGGRID_PATCH
|
|
IPCCOMMAND(switchtag, 1, {ARG_TYPE_UINT}),
|
|
#endif // BAR_TAGGRID_PATCH
|
|
#if CFACTS_PATCH
|
|
IPCCOMMAND(setcfact, 1, {ARG_TYPE_FLOAT}),
|
|
#endif // CFACTS_PATCH
|
|
#if CYCLELAYOUTS_PATCH
|
|
IPCCOMMAND(cyclelayout, 1, {ARG_TYPE_SINT}),
|
|
#endif // CYCLELAYOUTS_PATCH
|
|
#if EXRESIZE_PATCH
|
|
IPCCOMMAND(explace, 1, {ARG_TYPE_UINT}),
|
|
IPCCOMMAND(togglehorizontalexpand, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(toggleverticalexpand, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(togglemaximize, 1, {ARG_TYPE_SINT}),
|
|
#endif // EXRESIZE_PATCH
|
|
#if !FAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
|
|
IPCCOMMAND(togglefakefullscreen, 1, {ARG_TYPE_NONE}),
|
|
#endif // FAKEFULLSCREEN_CLIENT_PATCH
|
|
#if FLOATPOS_PATCH
|
|
IPCCOMMAND(floatpos, 1, {ARG_TYPE_STR}),
|
|
#endif // FLOATPOS_PATCH
|
|
#if FULLSCREEN_PATCH
|
|
IPCCOMMAND(fullscreen, 1, {ARG_TYPE_NONE}),
|
|
#endif // FULLSCREEN_PATCH
|
|
#if FLEXTILE_DELUXE_LAYOUT
|
|
IPCCOMMAND(incnstack, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(rotatelayoutaxis, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(setlayoutaxisex, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(mirrorlayout, 1, {ARG_TYPE_NONE}),
|
|
#endif // FLEXTILE_DELUXE_LAYOUT
|
|
#if FOCUSURGENT_PATCH
|
|
IPCCOMMAND(focusurgent, 1, {ARG_TYPE_NONE}),
|
|
#endif // FOCUSURGENT_PATCH
|
|
#if FOCUSADJACENTTAG_PATCH
|
|
IPCCOMMAND(viewtoleft, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(viewtoright, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(tagtoleft, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(tagtoright, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(tagandviewtoleft, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(tagandviewtoright, 1, {ARG_TYPE_NONE}),
|
|
#endif // FOCUSADJACENTTAG_PATCH
|
|
#if INPLACEROTATE_PATCH
|
|
IPCCOMMAND(inplacerotate, 1, {ARG_TYPE_SINT}),
|
|
#endif // INPLACEROTATE_PATCH
|
|
#if KEYMODES_PATCH
|
|
IPCCOMMAND(setkeymode, 1, {ARG_TYPE_UINT}),
|
|
#endif // KEYMODES_PATCH
|
|
#if MAXIMIZE_PATCH
|
|
IPCCOMMAND(togglehorizontalmax, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(toggleverticalmax, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(togglemax, 1, {ARG_TYPE_NONE}),
|
|
#endif // MAXIMIZE_PATCH
|
|
#if MPDCONTROL_PATCH
|
|
IPCCOMMAND(mpdchange, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(mpdcontrol, 1, {ARG_TYPE_NONE}),
|
|
#endif // MPDCONTROL_PATCH
|
|
#if MOVEPLACE_PATCH
|
|
IPCCOMMAND(moveplace, 1, {ARG_TYPE_UINT}),
|
|
#endif // MOVEPLACE_PATCH
|
|
#if MOVERESIZE_PATCH
|
|
IPCCOMMAND(moveresize, 1, {ARG_TYPE_STR}),
|
|
#endif // MOVERESIZE_PATCH
|
|
#if NAMETAG_PATCH
|
|
IPCCOMMAND(nametag, 1, {ARG_TYPE_NONE}),
|
|
#endif // NAMETAG_PATCH
|
|
#if RIODRAW_PATCH
|
|
IPCCOMMAND(rioresize, 1, {ARG_TYPE_NONE}),
|
|
#endif // RIODRAW_PATCH
|
|
#if PUSH_PATCH || PUSH_NO_MASTER_PATCH
|
|
IPCCOMMAND(pushdown, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(pushup, 1, {ARG_TYPE_NONE}),
|
|
#endif // PUSH_PATCH / PUSH_NO_MASTER_PATCH
|
|
#if ROTATESTACK_PATCH
|
|
IPCCOMMAND(rotatestack, 1, {ARG_TYPE_SINT}),
|
|
#endif // ROTATESTACK_PATCH
|
|
#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
|
|
IPCCOMMAND(togglescratch, 1, {ARG_TYPE_UINT}),
|
|
#endif // SCRATCHPADS_PATCH
|
|
#if SELFRESTART_PATCH
|
|
IPCCOMMAND(self_restart, 1, {ARG_TYPE_NONE}),
|
|
#endif // SELFRESTART_PATCH
|
|
#if SETBORDERPX_PATCH
|
|
IPCCOMMAND(setborderpx, 1, {ARG_TYPE_SINT}),
|
|
#endif // SETBORDERPX_PATCH
|
|
#if BAR_WINTITLEACTIONS_PATCH
|
|
IPCCOMMAND(showhideclient, 1, {ARG_TYPE_NONE}),
|
|
#endif // BAR_WINTITLEACTIONS_PATCH
|
|
#if SHIFTBOTH_PATCH
|
|
IPCCOMMAND(shiftboth, 1, {ARG_TYPE_SINT}),
|
|
#endif // SHIFTBOTH_PATCH
|
|
#if SHIFTTAG_PATCH
|
|
IPCCOMMAND(shifttag, 1, {ARG_TYPE_SINT}),
|
|
#endif // SHIFTTAG_PATCH
|
|
#if SHIFTTAGCLIENTS_PATCH
|
|
IPCCOMMAND(shifttagclients, 1, {ARG_TYPE_SINT}),
|
|
#endif // SHIFTVIEWCLIENTS_PATCH
|
|
#if SHIFTVIEW_PATCH
|
|
IPCCOMMAND(shiftview, 1, {ARG_TYPE_SINT}),
|
|
#endif // SHIFTVIEW_PATCH
|
|
#if SHIFTVIEW_CLIENTS_PATCH
|
|
IPCCOMMAND(shiftviewclients, 1, {ARG_TYPE_SINT}),
|
|
#endif // SHIFTVIEW_CLIENTS_PATCH
|
|
#if SHIFTSWAPTAGS_PATCH && SWAPTAGS_PATCH
|
|
IPCCOMMAND(shiftswaptags, 1, {ARG_TYPE_SINT}),
|
|
#endif // SHIFTSWAPTAGS_PATCH
|
|
#if STACKER_PATCH
|
|
IPCCOMMAND(pushstack, 1, {ARG_TYPE_SINT}),
|
|
#endif // STACKER_PATCH
|
|
#if STICKY_PATCH
|
|
IPCCOMMAND(togglesticky, 1, {ARG_TYPE_NONE}),
|
|
#endif // STICKY_PATCH
|
|
#if SWAPFOCUS_PATCH && PERTAG_PATCH
|
|
IPCCOMMAND(swapfocus, 1, {ARG_TYPE_SINT}),
|
|
#endif // SWAPFOCUS_PATCH
|
|
#if SWITCHCOL_PATCH
|
|
IPCCOMMAND(switchcol, 1, {ARG_TYPE_NONE}),
|
|
#endif // SWITCHCOL_PATCH
|
|
#if TAGALLMON_PATCH
|
|
IPCCOMMAND(tagallmon, 1, {ARG_TYPE_SINT}),
|
|
#endif // TAGALLMON_PATCH
|
|
#if TAGOTHERMONITOR_PATCH
|
|
IPCCOMMAND(tagnextmonex, 1, {ARG_TYPE_UINT}),
|
|
IPCCOMMAND(tagprevmonex, 1, {ARG_TYPE_UINT}),
|
|
#endif // TAGOTHERMONITOR_PATCH
|
|
#if TAGSWAPMON_PATCH
|
|
IPCCOMMAND(tagswapmon, 1, {ARG_TYPE_SINT}),
|
|
#endif // TAGSWAPMON_PATCH
|
|
#if TOGGLEFULLSCREEN_PATCH
|
|
IPCCOMMAND(togglefullscreen, 1, {ARG_TYPE_NONE}),
|
|
#endif // TOGGLEFULLSCREEN_PATCH
|
|
#if TRANSFER_PATCH
|
|
IPCCOMMAND(transfer, 1, {ARG_TYPE_NONE}),
|
|
#endif // TRANSFER_PATCH
|
|
#if TRANSFER_ALL_PATCH
|
|
IPCCOMMAND(transferall, 1, {ARG_TYPE_NONE}),
|
|
#endif // TRANSFER_ALL_PATCH
|
|
#if UNFLOATVISIBLE_PATCH
|
|
IPCCOMMAND(unfloatvisible, 1, {ARG_TYPE_NONE}),
|
|
#endif // UNFLOATVISIBLE_PATCH
|
|
#if VANITYGAPS_PATCH
|
|
IPCCOMMAND(incrgaps, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(incrigaps, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(incrogaps, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(incrihgaps, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(incrivgaps, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(incrohgaps, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(incrovgaps, 1, {ARG_TYPE_SINT}),
|
|
IPCCOMMAND(togglegaps, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(defaultgaps, 1, {ARG_TYPE_NONE}),
|
|
IPCCOMMAND(setgapsex, 1, {ARG_TYPE_SINT}),
|
|
#endif // VANITYGAPS_PATCH
|
|
#if WINVIEW_PATCH
|
|
IPCCOMMAND(winview, 1, {ARG_TYPE_NONE}),
|
|
#endif // WINVIEW_PATCH
|
|
#if XRDB_PATCH && !BAR_VTCOLORS_PATCH
|
|
IPCCOMMAND(xrdb, 1, {ARG_TYPE_NONE}),
|
|
#endif // XRDB_PATCH
|
|
};
|
|
#endif // IPC_PATCH
|