1112 lines
40 KiB
Modula-2
1112 lines
40 KiB
Modula-2
.{
|
|
// 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 = .{
|
|
//
|
|
},
|
|
}
|