1208 lines
44 KiB
Zig
1208 lines
44 KiB
Zig
.{
|
|
// environment variables
|
|
// used by processes spawned by kwm
|
|
.env = .{
|
|
// .{ "key", "value" },
|
|
},
|
|
|
|
// working direction of processes spawned by kwm
|
|
.working_directory = .home,
|
|
|
|
.startup_cmds = .{
|
|
.{ "sh", "-c", "sleep 1; wlr-randr --output DP-1 --mode 3840x2160 --scale 2; wlr-randr --output HDMI-A-1 --mode 3840x2160 --scale 2 --left-of DP-1" },
|
|
},
|
|
|
|
// null
|
|
// or
|
|
// .{ .name = []const u8, .size = u32 }
|
|
.xcursor_theme = null,
|
|
|
|
// ?u32
|
|
// solid color background
|
|
// note: set this to null if you use other wallpaper program like `swaybg`, orelse it will be covered by this and unable to see
|
|
.background = 0x33000000,
|
|
|
|
.bar = .{
|
|
.show_default = true,
|
|
// .top
|
|
// .bottom
|
|
.position = .top,
|
|
|
|
.font = "monospace:size=24",
|
|
|
|
.scheme = .{
|
|
.normal = .{
|
|
.fg = 0x828bb8ff,
|
|
.bg = 0x1b1d2bd0,
|
|
},
|
|
.select = .{
|
|
.fg = 0x444a73ff,
|
|
.bg = 0xc8d3f5d0,
|
|
},
|
|
},
|
|
|
|
// set null to disable tags part
|
|
.tags = .{
|
|
// tags show on bar
|
|
.tags = .{ "1", "2", "3", "4", "5", "6", "7", "8", "9" },
|
|
|
|
// click callback
|
|
// each part supports left/right/middle/side/extra/forward/back/task
|
|
// set null to disable
|
|
.click = .{
|
|
// could use 0 there because it will be replace with the tag clicked
|
|
.left = .{ .set_output_tag = .{ .tag = .{ .tag = 0 } } },
|
|
.right = .{ .toggle_output_tag = .{ .mask = 0 } },
|
|
.middle = .{ .toggle_window_tag = .{ .mask = 0 } },
|
|
},
|
|
},
|
|
// set null to disable mode part
|
|
.mode = .{
|
|
// mode tags show on bar
|
|
// display full mode string by default
|
|
.tags = .{
|
|
.{ "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
|
|
},
|
|
|
|
.click = .{
|
|
.left = .{ .switch_mode = .{ .mode = "default" } },
|
|
},
|
|
},
|
|
// set null to disable layout part
|
|
.layout = .{
|
|
// layout tags show on bar
|
|
// {{?}} will be replaced with managed window count, when the count is 0, `?` will be used as replacement.
|
|
// e.g. [{{{=}}], when managed window count > 0, [N] will be showed, else [=] will be showed
|
|
.tags = .{
|
|
.tile = .{
|
|
.left = "[]=",
|
|
.right = "=[]",
|
|
.top = "[^]",
|
|
.bottom = "[_]",
|
|
},
|
|
.grid = .{
|
|
.horizontal = "|+|",
|
|
.vertical = "|||",
|
|
},
|
|
.monocle = "[{{=}}]",
|
|
.deck = .{
|
|
.left = "[{{D}}]=",
|
|
.right = "=[{{D}}]",
|
|
.top = "[{{D}}^]",
|
|
.bottom = "[{{D}}_]",
|
|
},
|
|
.scroller = "[==]",
|
|
.float = "><>",
|
|
},
|
|
|
|
.click = .{
|
|
.left = .switch_to_previous_layout,
|
|
},
|
|
},
|
|
// set null to disable title part
|
|
.title = .{
|
|
.click = .{
|
|
.left = .{ .zoom = .{ .swap = false } },
|
|
},
|
|
},
|
|
// set null to disable status part
|
|
.status = .{
|
|
.data = .stdin,
|
|
|
|
.click = .{
|
|
.middle = .{ .spawn = .{ .argv = .{ "kitty", "--single-instance", "--instance-group", "default" } } },
|
|
},
|
|
},
|
|
|
|
// override colors
|
|
.override_colors = .{
|
|
// areas:
|
|
// .tags
|
|
// .{ .mode = "floating" or other modes }, null will match all mode
|
|
// .{ layout = .tile or other layout }, null will match all layouts
|
|
// .title
|
|
// .status
|
|
//
|
|
// scheme is a struct, no need to specify all fields:
|
|
// .{
|
|
// .normal = .{
|
|
// .fg = u32,
|
|
// .bg = u32,
|
|
// },
|
|
// .select = .{
|
|
// .fg = u32,
|
|
// .bg = u32,
|
|
// }
|
|
// }
|
|
//
|
|
// mode, layout and status will only use the `normal` color
|
|
// tags and title will use both `normal` and `select` color
|
|
//
|
|
|
|
// set scheme for mode tag
|
|
.{
|
|
.area = .{ .mode = null },
|
|
.scheme = .{
|
|
.normal = .{
|
|
.fg = 0x444a73ff,
|
|
.bg = 0xc8d3f5d0,
|
|
}
|
|
}
|
|
},
|
|
}
|
|
},
|
|
|
|
.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,
|
|
|
|
// disable wrap around when iter focus or swap window in scroller layout
|
|
.disable_wrap_around_for_scroller = false,
|
|
|
|
// 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 = 2,
|
|
.color = .{
|
|
.focus = 0xffc777ff,
|
|
.unfocus = 0x828bb8ff,
|
|
.swallowing = 0x0830e6ff,
|
|
},
|
|
},
|
|
|
|
// .tile
|
|
// .grid
|
|
// .monocle
|
|
// .deck
|
|
// .scroller
|
|
// .float
|
|
.default_layout = .tile,
|
|
.layout = .{
|
|
.tile = .{
|
|
.nmaster = 1,
|
|
.mfact = 0.55,
|
|
.inner_gap = 6,
|
|
.outer_gap = 4,
|
|
|
|
// .left
|
|
// .right
|
|
// .top
|
|
// .bottom
|
|
.master_location = .left,
|
|
},
|
|
.grid = .{
|
|
.outer_gap = 4,
|
|
.inner_gap = 6,
|
|
|
|
// .horizontal
|
|
// .vertical
|
|
.direction = .horizontal,
|
|
},
|
|
.monocle = .{
|
|
.gap = 0,
|
|
},
|
|
.deck = .{
|
|
.nmaster = 1,
|
|
.mfact = 0.55,
|
|
.inner_gap = 6,
|
|
.outer_gap = 4,
|
|
|
|
// .left
|
|
// .right
|
|
// .top
|
|
// .bottom
|
|
.master_location = .left,
|
|
},
|
|
.scroller = .{
|
|
.mfact = 0.5,
|
|
.inner_gap = 8,
|
|
.outer_gap = 4,
|
|
},
|
|
},
|
|
|
|
// key/pointer bindings
|
|
.bindings = .{
|
|
// repeat info for key repeat event, different with the repeat_info of input device
|
|
.repeat_info = .{
|
|
.rate = 50,
|
|
.delay = 300,
|
|
},
|
|
|
|
// 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,
|
|
// command to run before quit
|
|
// will quit only when the process exit with zero status
|
|
// e.g. .{ "sh", "-c", "~/cleanup.sh" }
|
|
.hook = null,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
.{
|
|
.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 = "e",
|
|
.modifiers = .{ .mod4 = true, .shift = true },
|
|
.event = .{
|
|
.click = .{
|
|
.pressed = .toggle_maximize,
|
|
},
|
|
},
|
|
},
|
|
.{
|
|
.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 = "0", .modifiers = .{ .mod4 = true, .shift = true }, .event = .{ .click = .{ .pressed = .{ .set_window_tag = .{ .tag = .{ .tag = 0b111111111 } } } } } },
|
|
|
|
.{ .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 = .{ .change = .{ .step = 0.01 } },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
.{
|
|
.keysym = "h",
|
|
.modifiers = .{ .mod4 = true },
|
|
.event = .{
|
|
.click = .{
|
|
.pressed = .{
|
|
.modify_mfact = .{ .change = .{ .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 = .{ .argv = .{ "rofi", "-show", "run", "-theme", "Arc-Dark" } },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
.{
|
|
.keysym = "Return",
|
|
.modifiers = .{ .mod4 = true, .shift = true },
|
|
.event = .{
|
|
.click = .{
|
|
.pressed = .{
|
|
.spawn = .{ .argv = .{ "kitty", "--single-instance", "--instance-group", "default" } },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
.{
|
|
.keysym = "t",
|
|
.modifiers = .{ .mod4 = true, .shift = true },
|
|
.event = .{
|
|
.click = .{
|
|
.pressed = .{
|
|
.spawn = .{ .argv = .{ "lupan-set-theme", "toggle" } },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
// 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 },
|
|
.{ .app_id = .{ .str = "kitty" }, .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 = .{
|
|
//
|
|
},
|
|
|
|
// NOTE: configuration below is used for kwim
|
|
// without `@if(kwim)` would cause compile error during compile kwm
|
|
// @if(kwim)
|
|
// 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 = .{
|
|
//
|
|
},
|
|
// @endif
|
|
}
|