.{
    // environment variables
    // used by processes spawned by kwm
    .env = .{
        // .{ "key", "value" },
    },

    // working direction of processes spawned by kwm
    .working_directory = .home,

    .startup_cmds = .{
        // .{ "swaybg", "-i", "/path/to/wallpaper" },
    },

    // .none
    // or
    // .theme = .{ .name = []const u8, .size = u32 }
    .xcursor_theme = .none,

    // solid color background
    // note: set this to .none if you use other wallpaper program like `swaybg`, orelse it will be covered by this and unable to see
    .background = .{ .color = 0x33000000 },

    .bar = .{
        .show_default = true,
        // .top
        // .bottom
        .position = .top,
        .font = "monospace:size=10",
        .color = .{
            .normal = .{
                .fg = 0x828bb8ff,
                .bg = 0x1b1d2bd0,
            },
            .select = .{
                .fg = 0x444a73ff,
                .bg = 0xc8d3f5d0,
            },
        },
        .status = .{ .text = "^#ff0000ffk^#00ff00ffw^#0000ffffm" }, // .stdin or .{ .fifo = "fifo file path" }, could use ^#RGBA to switch text color, and use ^#! to switch back to default color
        // bar clicked callback
        // each part supports left/right/middle/side/extra/forward/back/task
        // set .none to disable
        .click = .{
            .tags = .{
                // could use 0 there because it will be replace with the tag clicked
                .left = .{ .action = .{ .set_output_tag = .{ .tag = .{ .tag = 0 } } } },
                .right = .{ .action = .{ .toggle_output_tag = .{ .mask = 0 } } },
                .middle = .{ .action = .{ .toggle_window_tag = .{ .mask = 0 } } },
            },
            .layout = .{
                .left = .{ .action = .switch_to_previous_layout },
            },
            .mode = .{
                .left = .{ .action = .{ .switch_mode = .{ .mode = "default" } } },
            },
            .title = .{
                .left = .{ .action = .{ .zoom = .{ .swap = false } } },
            },
            .status = .{
                .middle = .{ .action = .{ .spawn = .{ .argv = .{ "foot" } } } },
            },
        },
    },

    .sloppy_focus = false,

    // .none
    // .on_focus_changed: warp cursor to the center of window focused
    // .on_output_changed: warp cursor to the center of output focused
    .cursor_warp = .none,

    // if to remember last floating geometry
    .remember_floating_geometry = false,

    .auto_swallow = true,

    // .top: stack top
    // .bottom: stack bottom
    // .stack_top: for tile and deck layout
    // .above_focused
    // .below_focused
    .default_attach_mode = .{
        .tile = .top,
        .grid = .top,
        .monocle = .top,
        .deck = .stack_top,
        .scroller = .below_focused,
        .float = .top,
    },

    // .csd
    // .ssd
    .default_window_decoration = .ssd,

    // window border
    .border = .{
        .width = 5,
        .color = .{
            .focus = 0xffc777ff,
            .unfocus = 0x828bb8ff,
        },
    },

    // tags show on bar
    .tags = .{ "1", "2", "3", "4", "5", "6", "7", "8", "9" },

    // .tile
    // .grid
    // .monocle
    // .deck
    // .scroller
    // .float
    .default_layout = .tile,
    .layout = .{
        .tile = .{
            .nmaster = 1,
            .mfact = 0.55,
            .inner_gap = 12,
            .outer_gap = 9,

            // .left
            // .right
            // .top
            // .bottom
            .master_location = .left,
        },
        .grid = .{
            .outer_gap = 9,
            .inner_gap = 12,

            // .horizontal
            // .vertical
            .direction = .horizontal,
        },
        .monocle = .{
            .gap = 9,
        },
        .deck = .{
            .inner_gap = 12,
            .outer_gap = 9,

            // .left
            // .right
            // .top
            // .bottom
            .master_location = .left,
        },
        .scroller = .{
            .mfact = 0.5,
            .inner_gap = 16,
            .outer_gap = 9,
        },
    },

    // layout tags show on bar
    .layout_tag = .{
        .tile = .{
            .left = "[]=",
            .right = "=[]",
            .top = "[^]",
            .bottom = "[_]",
        },
        .grid = .{
            .horizontal = "|+|",
            .vertical = "|||",
        },
        .monocle = "[=]",
        .deck = .{
            .left = "[D]=",
            .right = "=[D]",
            .top = "[D^]",
            .bottom = "[D_]",
        },
        .scroller = "[==]",
        .float = "><>",
    },

    // key/pointer bindings
    .bindings = .{
        // repeat info for key repeat event, different with the repeat_info of input device
        .repeat_info = .{
            .rate = 50,
            .delay = 300,
        },

        // mode tags show on bar
        // display full mode string by default
        .mode_tag = .{
            .{ "default", "" },         // hide mode tag in default mode
            .{ "passthrough", "P" },    // only show "P" on bar in passthrough mode
            .{ "floating", "F" },       // only show "F" on bar in floating mode
        },

        // list of key bindings
        // full scheme:
        //       mode: string(< 16 bytes)
        //          "default" and "lock" are defined by default
        //          "default" is the default mode, if you not set `mode`, the binding will be seemed as "default" mode
        //          when the session locked, kwm will switch to "lock" mode
        //          you could define any other mode
        //       keysym: keysym string
        //       modifiers:
        //          a struct with fields: shift, ctrl, mod1, mod3, mod4, mod5, and all of these fields are `false` by default
        //          set modifiers to .{} means key binding without any modifier
        //       event: key binding trigger event
        //          there are two options:
        //              .event = .{
        //                  .repeat = action
        //              }
        //              after the key pressed, the action will repeatly trigger until key released or any another key pressed
        //
        //              .event = .{
        //                  .click = .{
        //                      .pressed = null or action, default is null
        //                      .released = null or action, default is null
        //                  }
        //              }
        //              the corrosponding action will only trigger once when key pressed or released
        //              the pressed action and released action could define at the same time
        .key = .{
            .{
                .keysym = "r",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .reload_config,
                    },
                },
            },

            // passthrough
            .{
                .keysym = "Escape",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_mode = .{ .mode = "passthrough" },
                        },
                    },
                },
            },
            .{
                .mode = "passthrough",
                .keysym = "Escape",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_mode = .{ .mode = "default" },
                        },
                    },
                },
            },

            // floating
            .{
                .keysym = "f",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_mode = .{ .mode = "floating", .auto_quit = .once_unbound_pressed },
                        },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "l",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .repeat = .{
                        .move = .{ .step = .{ .horizontal = 10 } },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "h",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .repeat = .{
                        .move = .{ .step = .{ .horizontal = -10 } },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "j",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .repeat = .{
                        .move = .{ .step = .{ .vertical = 10 } },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "k",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .repeat = .{
                        .move = .{ .step = .{ .vertical = -10 } },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "l",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .repeat = .{
                        .resize = .{ .step = .{ .horizontal = 10 } },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "h",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .repeat = .{
                        .resize = .{ .step = .{ .horizontal = -10 } },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "j",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .repeat = .{
                        .resize = .{ .step = .{ .vertical = 10 } },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "k",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .repeat = .{
                        .resize = .{ .step = .{ .vertical = -10 } },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "l",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .snap = .{ .edge = .right },
                        },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "h",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .snap = .{ .edge = .left },
                        },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "j",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .snap = .{ .edge = .bottom },
                        },
                    },
                },
            },
            .{
                .mode = "floating",
                .keysym = "k",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .snap = .{ .edge = .top },
                        },
                    },
                },
            },

            // default
            .{
                .keysym = "q",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .quit = .{ .exit_session = true },
                        },
                    },
                },
            },
            .{
                .keysym = "c",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .close,
                    },
                },
            },
            .{
                .keysym = "Return",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .zoom = .{ .swap = true },
                        },
                    },
                },
            },
            .{
                .keysym = "h",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .click = .{
                        .pressed = .focus_master_return,
                    },
                },
            },
            .{
                .keysym = "l",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .click = .{
                        .pressed = .focus_master_return,
                    },
                },
            },
            .{
                .keysym = "b",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .toggle_bar,
                    },
                },
            },
            .{
                .keysym = "j",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .focus_iter = .{ .direction = .forward },
                        },
                    },
                },
            },
            .{
                .keysym = "k",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .focus_iter = .{ .direction = .reverse },
                        },
                    },
                },
            },
            .{
                .keysym = "j",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .focus_iter = .{ .direction = .forward, .skip = .floating },
                        },
                    },
                },
            },
            .{
                .keysym = "k",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .focus_iter = .{ .direction = .reverse, .skip = .floating },
                        },
                    },
                },
            },
            .{
                .keysym = "j",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .swap = .{ .direction = .forward },
                        },
                    },
                },
            },
            .{
                .keysym = "k",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .swap = .{ .direction = .reverse },
                        },
                    },
                },
            },
            .{
                .keysym = "period",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .focus_output_iter = .{ .direction = .forward },
                        },
                    },
                },
            },
            .{
                .keysym = "comma",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .focus_output_iter = .{ .direction = .reverse },
                        },
                    },
                },
            },
            .{
                .keysym = "period",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .send_to_output = .{ .direction = .forward },
                        },
                    },
                },
            },
            .{
                .keysym = "comma",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .send_to_output = .{ .direction = .reverse },
                        },
                    },
                },
            },
            .{
                .keysym = "m",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .toggle_fullscreen = .{ .in_window = true },
                        },
                    },
                },
            },
            .{
                .keysym = "f",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .toggle_fullscreen = .{ .in_window = false },
                        },
                    },
                },
            },
            .{
                .keysym = "space",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .switch_to_previous_layout,
                    },
                },
            },
            .{
                .keysym = "f",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .toggle_floating,
                    },
                },
            },
            .{
                .keysym = "s",
                .modifiers = .{ .mod4 = true, .ctrl = true },
                .event = .{
                    .click = .{
                        .pressed = .toggle_sticky,
                    },
                },
            },
            .{
                .keysym = "a",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .toggle_swallow,
                    },
                },
            },
            .{
                .keysym = "f",
                .modifiers = .{ .mod4 = true, .mod1 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_layout = .{ .layout = .float },
                        },
                    },
                },
            },
            .{
                .keysym = "t",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_layout = .{ .layout = .tile },
                        },
                    },
                },
            },
            .{
                .keysym = "g",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_layout = .{ .layout = .grid },
                        },
                    },
                },
            },
            .{
                .keysym = "d",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_layout = .{ .layout = .deck },
                        },
                    },
                },
            },
            .{
                .keysym = "m",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_layout = .{ .layout = .monocle },
                        },
                    },
                },
            },
            .{
                .keysym = "s",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .switch_layout = .{ .layout = .scroller },
                        },
                    },
                },
            },
            .{
                .keysym = "Tab",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .switch_to_previous_tag,
                    },
                },
            },
            .{
                .keysym = "apostrophe",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .set_output_tag = .{ .tag = .{ .occupied = .forward } },
                        },
                    },
                },
            },
            .{
                .keysym = "semicolon",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .set_output_tag = .{ .tag = .{ .occupied = .reverse } },
                        },
                    },
                },
            },
            .{
                .keysym = "apostrophe",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .set_window_tag = .{ .tag = .{ .unoccupied = .forward } },
                        },
                    },
                },
            },
            .{
                .keysym = "semicolon",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .set_window_tag = .{ .tag = .{ .unoccupied = .reverse } },
                        },
                    },
                },
            },

            .{ .keysym = "1", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b1 } } } } } },
            .{ .keysym = "2", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b10 } } } } } },
            .{ .keysym = "3", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b100 } } } } } },
            .{ .keysym = "4", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b1000 } } } } } },
            .{ .keysym = "5", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b10000 } } } } } },
            .{ .keysym = "6", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b100000 } } } } } },
            .{ .keysym = "7", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b1000000 } } } } } },
            .{ .keysym = "8", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b10000000 } } } } } },
            .{ .keysym = "9", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b100000000 } } } } } },
            .{ .keysym = "0", .modifiers = .{ .mod4 = true }, .event = .{ .click = .{ .pressed = .{ .set_output_tag = .{ .tag = .{ .tag = 0b111111111 } } } } } },

            .{ .keysym = "1", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b1 } } } } },
            .{ .keysym = "2", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b10 } } } } },
            .{ .keysym = "3", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b100 } } } } },
            .{ .keysym = "4", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b1000 } } } } },
            .{ .keysym = "5", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b10000 } } } } },
            .{ .keysym = "6", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b100000 } } } } },
            .{ .keysym = "7", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b1000000 } } } } },
            .{ .keysym = "8", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b10000000 } } } } },
            .{ .keysym = "9", .modifiers = .{ .mod4 = true, .ctrl = true }, .event = .{ .click = .{ .pressed = .{ .toggle_output_tag = .{ .mask = 0b100000000 } } } } },

            .{ .keysym = "1", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b1 } } } } } },
            .{ .keysym = "2", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b10 } } } } } },
            .{ .keysym = "3", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b100 } } } } } },
            .{ .keysym = "4", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b1000 } } } } } },
            .{ .keysym = "5", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b10000 } } } } } },
            .{ .keysym = "6", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b100000 } } } } } },
            .{ .keysym = "7", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b1000000 } } } } } },
            .{ .keysym = "8", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b10000000 } } } } } },
            .{ .keysym = "9", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b100000000 } } } } } },

            .{ .keysym = "1", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b1 } } } } },
            .{ .keysym = "2", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b10 } } } } },
            .{ .keysym = "3", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b100 } } } } },
            .{ .keysym = "4", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b1000 } } } } },
            .{ .keysym = "5", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b10000 } } } } },
            .{ .keysym = "6", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b100000 } } } } },
            .{ .keysym = "7", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b1000000 } } } } },
            .{ .keysym = "8", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b10000000 } } } } },
            .{ .keysym = "9", .modifiers = .{ .mod4 = true, .ctrl = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .toggle_window_tag = .{ .mask = 0b100000000 } } } } },

            .{
                .keysym = "l",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_mfact = .{ .step = 0.01 },
                        },
                    },
                },
            },
            .{
                .keysym = "h",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_mfact = .{ .step = -0.01 },
                        },
                    },
                },
            },
            .{
                .keysym = "j",
                .modifiers = .{ .mod4 = true, .mod1 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_master_location = .{ .location = .bottom },
                        },
                    },
                },
            },
            .{
                .keysym = "k",
                .modifiers = .{ .mod4 = true, .mod1 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_master_location = .{ .location = .top },
                        },
                    },
                },
            },
            .{
                .keysym = "l",
                .modifiers = .{ .mod4 = true, .mod1 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_master_location = .{ .location = .right },
                        },
                    },
                },
            },
            .{
                .keysym = "h",
                .modifiers = .{ .mod4 = true, .mod1 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_master_location = .{ .location = .left },
                        },
                    },
                },
            },
            .{
                .keysym = "equal",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_nmaster = .{ .change = .increase },
                        },
                    },
                },
            },
            .{
                .keysym = "minus",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_nmaster = .{ .change = .decrease },
                        },
                    },
                },
            },
            .{
                .keysym = "equal",
                .modifiers = .{ .mod4 = true, .mod1 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_gap = .{ .step = 1 },
                        },
                    },
                },
            },
            .{
                .keysym = "minus",
                .modifiers = .{ .mod4 = true, .mod1 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .modify_gap = .{ .step = -1 },
                        },
                    },
                },
            },
            .{
                .keysym = "a",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .toggle_auto_swallow,
                    },
                },
            },
            .{
                .keysym = "g",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .toggle_grid_direction,
                    },
                },
            },

            .{
                .keysym = "p",
                .modifiers = .{ .mod4 = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .spawn_shell = .{ .cmd = "wmenu-run" },
                        },
                    },
                },
            },
            .{
                .keysym = "Return",
                .modifiers = .{ .mod4 = true, .shift = true },
                .event = .{
                    .click = .{
                        .pressed = .{
                            .spawn = .{ .argv = .{ "foot" } },
                        },
                    },
                },
            },
        },

        // list of pointer bindings
        // full scheme:
        //       mode: same as key binding
        //       button: pointer button
        //          .left
        //          .right
        //          .middle
        //       modifiers: same as key binding
        //       event: pointer binding trigger event
        //              .event = .{
        //                  .pressed = null or action, default is null
        //                  .released = null or action, default is null
        //              }
        //              the corrosponding action will only trigger once when pointer button pressed or released
        //              the pressed action and released action could define at the same time
        .pointer = .{
            .{
                .mode = "default",
                .button = .left,
                .modifiers = .{ .mod4 = true },
                .event = .{ .pressed = .pointer_move },
            },
            .{
                .mode = "default",
                .button = .right,
                .modifiers = .{ .mod4 = true },
                .event = .{ .pressed = .pointer_resize },
            },
        },
        // other unmentioned actions:
        //      group: run multiple actions in sequence
        //         .event = .{
        //             .click = .{
        //                 .pressed = .{
        //                     .group = .{
        //                         .actions = .{
        //                             action1,
        //                             action2,
        //                             ...
        //                         },
        //                     },
        //                 },
        //             },
        //         }
    },

    // rule part
    //
    // a rule pattern has fields below:
    //      str: pattern string, required
    //      regex: bool, if enable regex
    //      match_null: bool, if match null
    //
    // only the first rule matched will be applied

    // window rules
    // full scheme:
    //      app_id: rule pattern
    //      title: rule pattern
    //
    //      tag: window tag
    //      output: output name pattern, same as rule pattern
    //      floating: bool, if floating
    //      dimension: .{ .width = i32, .height = i32 }, initial dimension
    //      decoration: .csd or .ssd, window decoration
    //      is_terminal: bool, if set true, means the window could be swallowed
    //      disable_swallow: bool, if set true, the window could not swallow any other windows
    //      scroller_mfact: f32, initial mfact of the window for scroller layout
    //      attach_mode: like `default_attach_mode`, change attach_mode for window matched
    .window_rules = .{
        .{ .app_id = .{ .str = "", .match_null = true }, .floating = true },
        .{ .app_id = .{ .str = "zenity" }, .floating = true },
        .{ .app_id = .{ .str = "DesktopEditors" }, .floating = true },
        .{ .app_id = .{ .str = "xdg-desktop-portal-gtk" }, .floating = true },
        .{ .app_id = .{ .str = "chromium" }, .tag = 0b10, .scroller_mfact = 0.9 },
        .{ .app_id = .{ .str = "foot" }, .is_terminal = true, .scroller_mfact = 0.8 },
    },

    // output rules
    // full scheme:
    //      name: rule pattern
    //
    //      presentation_mode: presentation mode, .vsync or .async
    //      layout: same as `layout` before but you only need to specify the values you want to change
    //      default_layout: same as `default_layout` before
    .output_rules = .{
        //
    },

    // input device rules
    // full scheme:
    //      name: rule pattern
    //
    //      repeat_info: .{ .rate = i32, .delay = i32 }
    //      scroll_factor: f64
    .input_device_rules = .{
        .{ .repeat_info = .{ .rate = 50, .delay = 300 } },
    },

    // libinput device rules
    // full scheme:
    //      name: rule pattern
    //
    //      send_events_modes:
    //          .enabled
    //          .disabled
    //          .disabled_on_external_mouse
    //      tap: .enabled or .disabled
    //      drag: .enabled or .disabled
    //      drag_lock: .enabled or .disabled
    //      tap_button_map: .lrm or .lmr
    //      three_finger_drag:
    //          .disabled
    //          .enabled_3fg
    //          .enabled_4fg
    //      calibration_matrix: [6]f32
    //      accel_profile:
    //          .none
    //          .flat
    //          .adaptive
    //          .custom
    //      accel_speed: f32
    //      natural_scroll: .enabled or .disabled
    //      left_handed: .enabled or .disabled
    //      click_method:
    //          .none
    //          .button_areas
    //          .clickfinger
    //      clickfinger_button_map: .lrm or .lmr
    //      middle_button_emulation: .enabled or .disabled
    //      scroll_method:
    //          .no_scroll
    //          .two_finger
    //          .edge
    //          .on_button_down
    //      scroll_button:
    //          .left
    //          .right
    //          .middle
    //      scroll_button_lock: .enabled or .disabled
    //      disable_while_typing: .enabled or .disabled
    //      disable_while_trackpointing: .enabled or .disabled
    //      rotation_angle: u32
    .libinput_device_rules = .{
        .{ .name = .{ .str = ".*[tT]ouchpad", .regex = true }, .tap = .enabled, .drag = .enabled, .natural_scroll = .enabled },
        .{ .tap = .enabled, .drag = .enabled }
    },

    // xkb_keyboard rules
    // full scheme:
    //      name: rule pattern
    //
    //      numlock: .enabled or .disabled
    //      capslock: .enabled or .disabled
    //      layout:
    //          layout index: .{ .index = u32 }
    //          or
    //          layout name: .{ .name = "layout name" }
    //      keymap:
    //          .{ .file = .{ .path = "keymap file path", .format = .text_v1 or .text_v2 } }
    //          or
    //          .{
    //              .options = .{
    //                  .rules = ?[]const u8,
    //                  .model = ?[]const u8,
    //                  .layout = ?[]const u8,
    //                  .variant = ?[]const u8,
    //                  .options = ?[]const u8,
    //              }
    //          }
    .xkb_keyboard_rules = .{
        //
    },
}
