| 1 |
|
- |
---@meta |
| 2 |
|
- |
------------------------------------------------------------------------------- |
| 3 |
|
- |
-- OXWM Configuration File |
| 4 |
|
- |
------------------------------------------------------------------------------- |
| 5 |
|
- |
-- This is the default configuration for OXWM, a dynamic window manager. |
| 6 |
|
- |
-- Edit this file and reload with Mod+Shift+R (no compilation needed) |
| 7 |
|
- |
-- |
| 8 |
|
- |
-- For more information about configuring OXWM, see the documentation. |
| 9 |
|
- |
-- The Lua Language Server provides autocomplete and type checking. |
| 10 |
|
- |
------------------------------------------------------------------------------- |
| 11 |
|
- |
|
| 12 |
|
- |
---Load type definitions for LSP |
| 13 |
|
- |
---@module 'oxwm' |
| 14 |
|
- |
|
| 15 |
|
- |
------------------------------------------------------------------------------- |
| 16 |
|
- |
-- Variables |
| 17 |
|
- |
------------------------------------------------------------------------------- |
| 18 |
|
- |
-- Define your variables here for easy customization throughout the config. |
| 19 |
|
- |
-- This makes it simple to change keybindings, colors, and settings in one place. |
| 20 |
|
- |
|
| 21 |
|
- |
-- Modifier key: "Mod4" is the Super/Windows key, "Mod1" is Alt |
| 22 |
|
- |
local modkey = "Mod4" |
| 23 |
|
- |
|
| 24 |
|
- |
-- Terminal emulator command (defaults to alacritty) |
| 25 |
|
- |
local terminal = "st" |
| 26 |
|
- |
|
| 27 |
|
- |
local scripts = "/home/stevedylandev/dotfiles/scripts" |
| 28 |
|
- |
local rofi_scripts = "/home/stevedylandev/dotfiles/rofi/scripts" |
| 29 |
|
- |
|
| 30 |
|
- |
-- Spawn one of those scripts. They resolve their own siblings relative to |
| 31 |
|
- |
-- themselves, so an absolute path is all they need — PATH is not involved. |
| 32 |
|
- |
-- Extra arguments are passed straight through: script("txtcliphist.sh", "sel"). |
| 33 |
|
- |
local function script(name, ...) |
| 34 |
|
- |
local cmd = { scripts .. "/" .. name } |
| 35 |
|
- |
for _, arg in ipairs({ ... }) do |
| 36 |
|
- |
cmd[#cmd + 1] = arg |
| 37 |
|
- |
end |
| 38 |
|
- |
return oxwm.spawn(cmd) |
| 39 |
|
- |
end |
| 40 |
|
- |
|
| 41 |
|
- |
-- Same idea for the rofi menus in rofi/scripts. They are launchers, not |
| 42 |
|
- |
-- daemons: each one opens rofi, does the thing that was picked, and exits. |
| 43 |
|
- |
local function rofi_script(name, ...) |
| 44 |
|
- |
local cmd = { rofi_scripts .. "/" .. name } |
| 45 |
|
- |
for _, arg in ipairs({ ... }) do |
| 46 |
|
- |
cmd[#cmd + 1] = arg |
| 47 |
|
- |
end |
| 48 |
|
- |
return oxwm.spawn(cmd) |
| 49 |
|
- |
end |
| 50 |
|
- |
|
| 51 |
|
- |
-- Rofi's own modes need no script at all: drun reads .desktop files, window |
| 52 |
|
- |
-- lists what is already open, filebrowser walks directories, ssh reads |
| 53 |
|
- |
-- ~/.ssh/config. Behaviour for all of them lives in rofi/config.rasi. |
| 54 |
|
- |
local function rofi_mode(mode) |
| 55 |
|
- |
return oxwm.spawn({ "rofi", "-show", mode }) |
| 56 |
|
- |
end |
| 57 |
|
- |
|
| 58 |
|
- |
-- Color palette - customize these to match your theme |
| 59 |
|
- |
-- Alternatively you can import other files in here, such as |
| 60 |
|
- |
-- local colors = require("colors.lua") and make colors.lua a file |
| 61 |
|
- |
-- in the ~/.config/oxwm directory |
| 62 |
|
- |
-- Darkmatter (matches wezterm/ghostty theme) |
| 63 |
|
- |
local colors = { |
| 64 |
|
- |
fg = "#ffffff", |
| 65 |
|
- |
red = "#e78a53", |
| 66 |
|
- |
bg = "#121113", |
| 67 |
|
- |
cyan = "#aaaaaa", |
| 68 |
|
- |
green = "#fbcb97", |
| 69 |
|
- |
lavender = "#999999", |
| 70 |
|
- |
light_blue = "#888888", |
| 71 |
|
- |
grey = "#333333", |
| 72 |
|
- |
blue = "#5f8787", |
| 73 |
|
- |
purple = "#c1c1c1", |
| 74 |
|
- |
} |
| 75 |
|
- |
|
| 76 |
|
- |
-- Workspace tags - can be numbers, names, or icons (requires a Nerd Font) |
| 77 |
|
- |
-- The number of tags is deduced from the size of this table (up to a max of 12). |
| 78 |
|
- |
-- The default is 9. To use more, add entries here and uncomment the matching |
| 79 |
|
- |
-- keybinds for tags 10-12 further down in this file. |
| 80 |
|
- |
local tags = { "1", "2", "3", "4", "5", "6", "7", "8", "9" } |
| 81 |
|
- |
-- local tags = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" } -- Example of 12 tags |
| 82 |
|
- |
-- local tags = { "", "", "", "", "", "", "", "", "" } -- Example of nerd font icon tags |
| 83 |
|
- |
|
| 84 |
|
- |
-- Font for the status bar (use "fc-list" to see available fonts) |
| 85 |
|
- |
local bar_font = "BerkeleyMono Nerd Font:style=Bold:size=11" |
| 86 |
|
- |
|
| 87 |
|
- |
-- Define your blocks |
| 88 |
|
- |
-- Similar to widgets in qtile, or dwmblocks |
| 89 |
|
- |
local blocks = { |
| 90 |
|
- |
oxwm.bar.block.ram({ |
| 91 |
|
- |
format = "Ram: {used}/{total} GB", |
| 92 |
|
- |
interval = 5, |
| 93 |
|
- |
color = colors.blue, |
| 94 |
|
- |
underline = true, |
| 95 |
|
- |
}), |
| 96 |
|
- |
oxwm.bar.block.static({ |
| 97 |
|
- |
text = "│", |
| 98 |
|
- |
interval = 999999999, |
| 99 |
|
- |
color = colors.green, |
| 100 |
|
- |
underline = false, |
| 101 |
|
- |
}), |
| 102 |
|
- |
-- SSID, "off" when the link is down, "none" without a wireless card. |
| 103 |
|
- |
-- wifi-status supplies its own Nerd Font icon, which tracks signal |
| 104 |
|
- |
-- strength while connected, so the format is just its output. |
| 105 |
|
- |
-- Click opens the dmenu network menu (connect/disconnect wifi and eth0). |
| 106 |
|
- |
oxwm.bar.block.shell({ |
| 107 |
|
- |
format = "{}", |
| 108 |
|
- |
command = scripts .. "/wifi-status", |
| 109 |
|
- |
interval = 10, |
| 110 |
|
- |
color = colors.lavender, |
| 111 |
|
- |
underline = true, |
| 112 |
|
- |
click = { command = rofi_scripts .. "/rofi-wifi" }, |
| 113 |
|
- |
}), |
| 114 |
|
- |
oxwm.bar.block.static({ |
| 115 |
|
- |
text = "│", |
| 116 |
|
- |
interval = 999999999, |
| 117 |
|
- |
color = colors.green, |
| 118 |
|
- |
underline = false, |
| 119 |
|
- |
}), |
| 120 |
|
- |
-- Volume percentage of the default sink; click toggles mute. |
| 121 |
|
- |
-- vol-status supplies its own Nerd Font icon for the level (or mute). |
| 122 |
|
- |
-- The vol-* keybinds also fire a notification, so this can lag a second. |
| 123 |
|
- |
oxwm.bar.block.shell({ |
| 124 |
|
- |
format = "{}", |
| 125 |
|
- |
command = scripts .. "/vol-status", |
| 126 |
|
- |
interval = 2, |
| 127 |
|
- |
color = colors.purple, |
| 128 |
|
- |
underline = true, |
| 129 |
|
- |
click = { command = scripts .. "/vol-mute" }, |
| 130 |
|
- |
}), |
| 131 |
|
- |
oxwm.bar.block.static({ |
| 132 |
|
- |
text = "│", |
| 133 |
|
- |
interval = 999999999, |
| 134 |
|
- |
color = colors.green, |
| 135 |
|
- |
underline = false, |
| 136 |
|
- |
}), |
| 137 |
|
- |
oxwm.bar.block.shell({ |
| 138 |
|
- |
format = "{}", |
| 139 |
|
- |
command = scripts .. "/weather.sh -h", |
| 140 |
|
- |
interval = 999999999, |
| 141 |
|
- |
color = colors.red, |
| 142 |
|
- |
underline = true, |
| 143 |
|
- |
}), |
| 144 |
|
- |
oxwm.bar.block.static({ |
| 145 |
|
- |
text = "│", |
| 146 |
|
- |
interval = 999999999, |
| 147 |
|
- |
color = colors.green, |
| 148 |
|
- |
underline = false, |
| 149 |
|
- |
}), |
| 150 |
|
- |
oxwm.bar.block.datetime({ |
| 151 |
|
- |
format = "{}", |
| 152 |
|
- |
date_format = "%a, %b %d - %-I:%M %P", |
| 153 |
|
- |
interval = 1, |
| 154 |
|
- |
color = colors.cyan, |
| 155 |
|
- |
underline = true, |
| 156 |
|
- |
}), |
| 157 |
|
- |
-- Uncomment to add battery status (useful for laptops) |
| 158 |
|
- |
oxwm.bar.block.battery({ |
| 159 |
|
- |
format = "Bat: {}%", |
| 160 |
|
- |
charging = "⚡ Bat: {}%", |
| 161 |
|
- |
discharging = "- Bat: {}%", |
| 162 |
|
- |
full = "✓ Bat: {}%", |
| 163 |
|
- |
interval = 30, |
| 164 |
|
- |
color = colors.green, |
| 165 |
|
- |
underline = true, |
| 166 |
|
- |
-- click: run a command when the block is clicked |
| 167 |
|
- |
-- click = "alacritty -e btop", |
| 168 |
|
- |
-- click = { command = "bluetui", floating = true }, |
| 169 |
|
- |
}), |
| 170 |
|
- |
}; |
| 171 |
|
- |
|
| 172 |
|
- |
------------------------------------------------------------------------------- |
| 173 |
|
- |
-- Basic Settings |
| 174 |
|
- |
------------------------------------------------------------------------------- |
| 175 |
|
- |
oxwm.set_terminal(terminal) |
| 176 |
|
- |
oxwm.set_modkey(modkey) -- This is for Mod + mouse binds, such as drag/resize |
| 177 |
|
- |
oxwm.set_tags(tags) |
| 178 |
|
- |
|
| 179 |
|
- |
-- Set default layout (tiling by default) |
| 180 |
|
- |
oxwm.set_layout("dwindle") |
| 181 |
|
- |
|
| 182 |
|
- |
------------------------------------------------------------------------------- |
| 183 |
|
- |
-- Layouts |
| 184 |
|
- |
------------------------------------------------------------------------------- |
| 185 |
|
- |
-- Set custom symbols for layouts (displayed in the status bar) |
| 186 |
|
- |
-- Available layouts: "tiling", "normie" (floating), "grid", "monocle", "tabbed", "dwindle" |
| 187 |
|
- |
oxwm.set_layout_symbol("normie", "[F]") |
| 188 |
|
- |
oxwm.set_layout_symbol("tiling", "[T]") |
| 189 |
|
- |
oxwm.set_layout_symbol("tabbed", "[=]") |
| 190 |
|
- |
oxwm.set_layout_symbol("dwindle", "[\\]") |
| 191 |
|
- |
|
| 192 |
|
- |
-- Example: bind dwindle (fibonacci) layout |
| 193 |
|
- |
oxwm.key.bind({ modkey }, "R", oxwm.layout.set("dwindle")) |
| 194 |
|
- |
|
| 195 |
|
- |
-- Set default layout of specific tag (tag_index, layout_name) |
| 196 |
|
- |
-- Unset value uses oxwm.set_layout value |
| 197 |
|
- |
-- oxwm.set_tag_layout(1, "grid") |
| 198 |
|
- |
|
| 199 |
|
- |
------------------------------------------------------------------------------- |
| 200 |
|
- |
-- Appearance |
| 201 |
|
- |
------------------------------------------------------------------------------- |
| 202 |
|
- |
-- Border configuration |
| 203 |
|
- |
|
| 204 |
|
- |
-- Width in pixels |
| 205 |
|
- |
oxwm.border.set_width(2) |
| 206 |
|
- |
-- Color of focused window border |
| 207 |
|
- |
oxwm.border.set_focused_color(colors.blue) |
| 208 |
|
- |
-- Color of unfocused window borders |
| 209 |
|
- |
oxwm.border.set_unfocused_color(colors.bg) |
| 210 |
|
- |
|
| 211 |
|
- |
-- Where floating windows spawn: "top-left", "top-center", "top-right", |
| 212 |
|
- |
-- "center-left", "center", "center-right", "bottom-left", "bottom-center", "bottom-right" |
| 213 |
|
- |
oxwm.set_floating_position("center") |
| 214 |
|
- |
|
| 215 |
|
- |
-- Smart Enabled = No border if 1 window |
| 216 |
|
- |
oxwm.gaps.set_smart(false) |
| 217 |
|
- |
-- Inner gaps (horizontal, vertical) in pixels |
| 218 |
|
- |
oxwm.gaps.set_inner(12, 12) |
| 219 |
|
- |
-- Outer gaps (horizontal, vertical) in pixels |
| 220 |
|
- |
oxwm.gaps.set_outer(12, 12) |
| 221 |
|
- |
|
| 222 |
|
- |
------------------------------------------------------------------------------- |
| 223 |
|
- |
-- Window Rules |
| 224 |
|
- |
------------------------------------------------------------------------------- |
| 225 |
|
- |
-- Rules allow you to automatically configure windows based on their properties |
| 226 |
|
- |
-- You can match windows by class, instance, title, or role |
| 227 |
|
- |
-- Available properties: floating, tag, fullscreen, etc. |
| 228 |
|
- |
-- |
| 229 |
|
- |
-- Common use cases: |
| 230 |
|
- |
-- - Force floating for certain applications (dialogs, utilities) |
| 231 |
|
- |
-- - Send specific applications to specific workspaces |
| 232 |
|
- |
-- - Configure window behavior based on title or class |
| 233 |
|
- |
|
| 234 |
|
- |
-- Examples (uncomment to use): |
| 235 |
|
- |
oxwm.rule.add({ instance = "chromium", floating = true, tag = 2 }) |
| 236 |
|
- |
oxwm.rule.add({ instance = "helium.AppImage", floating = true, tag = 2 }) |
| 237 |
|
- |
oxwm.rule.add({ instance = "gimp", floating = true}) |
| 238 |
|
- |
-- oxwm.rule.add({ class = "Alacritty", tag = 9, focus = true }) |
| 239 |
|
- |
-- oxwm.rule.add({ class = "firefox", title = "Library", floating = true }) |
| 240 |
|
- |
-- oxwm.rule.add({ class = "firefox", tag = 2 }) |
| 241 |
|
- |
-- oxwm.rule.add({ instance = "mpv", floating = true }) |
| 242 |
|
- |
|
| 243 |
|
- |
-- To find window properties, use xprop and click on the window |
| 244 |
|
- |
-- WM_CLASS(STRING) shows both instance and class (instance, class) |
| 245 |
|
- |
|
| 246 |
|
- |
------------------------------------------------------------------------------- |
| 247 |
|
- |
-- Status Bar Configuration |
| 248 |
|
- |
------------------------------------------------------------------------------- |
| 249 |
|
- |
-- Font configuration |
| 250 |
|
- |
oxwm.bar.set_font(bar_font) |
| 251 |
|
- |
|
| 252 |
|
- |
-- Position configuration (top/bottom, top is default) |
| 253 |
|
- |
-- oxwm.bar.set_position("bottom") |
| 254 |
|
- |
|
| 255 |
|
- |
-- Set your blocks here (defined above) |
| 256 |
|
- |
oxwm.bar.set_blocks(blocks) |
| 257 |
|
- |
|
| 258 |
|
- |
-- Bar color schemes (for workspace tag display) |
| 259 |
|
- |
-- Parameters: foreground, background, border |
| 260 |
|
- |
|
| 261 |
|
- |
-- Unoccupied tags |
| 262 |
|
- |
oxwm.bar.set_scheme_normal(colors.fg, colors.bg, colors.grey) |
| 263 |
|
- |
-- Occupied tags |
| 264 |
|
- |
oxwm.bar.set_scheme_occupied(colors.cyan, colors.bg, colors.cyan) |
| 265 |
|
- |
-- Currently selected tag |
| 266 |
|
- |
oxwm.bar.set_scheme_selected(colors.cyan, colors.bg, colors.purple) |
| 267 |
|
- |
-- Urgent tags (windows requesting attention) |
| 268 |
|
- |
oxwm.bar.set_scheme_urgent(colors.red, colors.bg, colors.red) |
| 269 |
|
- |
|
| 270 |
|
- |
-- Hide tags that have no windows and are not selected |
| 271 |
|
- |
-- oxwm.bar.set_hide_vacant_tags(true) |
| 272 |
|
- |
|
| 273 |
|
- |
------------------------------------------------------------------------------- |
| 274 |
|
- |
-- Keybindings |
| 275 |
|
- |
------------------------------------------------------------------------------- |
| 276 |
|
- |
-- Keybindings are defined using oxwm.key.bind(modifiers, key, action) |
| 277 |
|
- |
-- Modifiers: {"Mod4"}, {"Mod1"}, {"Shift"}, {"Control"}, or combinations like {"Mod4", "Shift"} |
| 278 |
|
- |
-- Keys: Use uppercase for letters (e.g., "Return", "H", "J", "K", "L") |
| 279 |
|
- |
-- Actions: Functions that return actions (e.g., oxwm.spawn(), oxwm.client.kill()) |
| 280 |
|
- |
-- |
| 281 |
|
- |
-- A list of available keysyms can be found in the X11 keysym definitions. |
| 282 |
|
- |
-- Common keys: Return, Space, Tab, Escape, Backspace, Delete, Left, Right, Up, Down |
| 283 |
|
- |
|
| 284 |
|
- |
-- Basic window management |
| 285 |
|
- |
|
| 286 |
|
- |
oxwm.key.bind({ modkey }, "Return", oxwm.spawn_terminal()) |
| 287 |
|
- |
-- Application launcher (.desktop entries, with icons and search) |
| 288 |
|
- |
oxwm.key.bind({ modkey }, "D", rofi_mode("drun")) |
| 289 |
|
- |
-- Bare executables on PATH, for the things that ship no .desktop file |
| 290 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "D", rofi_mode("run")) |
| 291 |
|
- |
-- Jump to a window that is already open, wherever it is tagged |
| 292 |
|
- |
oxwm.key.bind({ modkey }, "Tab", rofi_mode("window")) |
| 293 |
|
- |
-- Browse the filesystem and open a file with its default application |
| 294 |
|
- |
oxwm.key.bind({ modkey }, "E", rofi_mode("filebrowser")) |
| 295 |
|
- |
-- Save screenshot to ~/Downloads |
| 296 |
|
- |
oxwm.key.bind({ modkey }, "S", oxwm.spawn({ "sh", "-c", "maim -s ~/Downloads/screenshot-$(date +%Y%m%d-%H%M%S).png" })) |
| 297 |
|
- |
oxwm.key.bind({ modkey }, "O", oxwm.spawn({ "sh", "-c", "helium.AppImage --no-sandbox" })) |
| 298 |
|
- |
oxwm.key.bind({ modkey }, "W", oxwm.client.kill()) |
| 299 |
|
- |
|
| 300 |
|
- |
-- Volume control (media keys, with Mod+Shift fallbacks for boards without them) |
| 301 |
|
- |
oxwm.key.bind({}, "XF86AudioRaiseVolume", script("vol-up")) |
| 302 |
|
- |
oxwm.key.bind({}, "XF86AudioLowerVolume", script("vol-down")) |
| 303 |
|
- |
oxwm.key.bind({}, "XF86AudioMute", script("vol-mute")) |
| 304 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "Equal", script("vol-up")) |
| 305 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "Minus", script("vol-down")) |
| 306 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "M", script("vol-mute")) |
| 307 |
|
- |
-- Audio menu (volume, mute, mic, pick an output) - rofi, no terminal needed |
| 308 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "U", rofi_script("rofi-audio")) |
| 309 |
|
- |
|
| 310 |
|
- |
-- WiFi menu: scan, connect (passphrase prompt is hidden), disconnect |
| 311 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "N", rofi_script("rofi-wifi")) |
| 312 |
|
- |
|
| 313 |
|
- |
-- Clipboard history. rofi-clipd (autostarted at the bottom of this file) |
| 314 |
|
- |
-- records everything that passes through the CLIPBOARD selection into |
| 315 |
|
- |
-- ~/.cache/rofi-clipboard; Mod+V picks an earlier entry back out. Shift+Del |
| 316 |
|
- |
-- inside the menu forgets an entry. |
| 317 |
|
- |
oxwm.key.bind({ modkey }, "V", rofi_script("rofi-clip")) |
| 318 |
|
- |
|
| 319 |
|
- |
-- Emoji and kaomoji picker; the pick lands in the clipboard, ready to paste |
| 320 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "E", rofi_script("rofi-emoji")) |
| 321 |
|
- |
-- Calculator: type an expression, Enter evaluates, Enter again copies |
| 322 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "C", rofi_script("rofi-calc")) |
| 323 |
|
- |
-- Search the web: pick an engine, type the query |
| 324 |
|
- |
oxwm.key.bind({ modkey }, "Slash", rofi_script("rofi-websearch")) |
| 325 |
|
- |
-- Screenshot menu (Mod+S still takes a plain region shot without asking) |
| 326 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "S", rofi_script("rofi-screenshot")) |
| 327 |
|
- |
-- Lock / suspend / reboot / shutdown / log out, each with a confirmation |
| 328 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "X", rofi_script("rofi-power")) |
| 329 |
|
- |
|
| 330 |
|
- |
-- Keybind overlay - Shows important keybindings on screen |
| 331 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "Slash", oxwm.show_keybinds()) |
| 332 |
|
- |
|
| 333 |
|
- |
-- Window state toggles |
| 334 |
|
- |
--oxwm.key.bind({ modkey, "Shift" }, "A", oxwm.client.toggle_fullscreen()) |
| 335 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "F", oxwm.client.toggle_floating()) |
| 336 |
|
- |
|
| 337 |
|
- |
-- Layout management |
| 338 |
|
- |
oxwm.key.bind({ modkey }, "F", oxwm.layout.set("normie")) |
| 339 |
|
- |
--oxwm.key.bind({ modkey }, "C", oxwm.layout.set("tiling")) |
| 340 |
|
- |
-- Cycle through layouts |
| 341 |
|
- |
oxwm.key.bind({ modkey }, "N", oxwm.layout.cycle()) |
| 342 |
|
- |
|
| 343 |
|
- |
-- Master area controls (tiling layout) |
| 344 |
|
- |
|
| 345 |
|
- |
-- Decrease/Increase master area width |
| 346 |
|
- |
oxwm.key.bind({ modkey }, "H", oxwm.set_master_factor(-5)) |
| 347 |
|
- |
oxwm.key.bind({ modkey }, "L", oxwm.set_master_factor(5)) |
| 348 |
|
- |
-- Enable tiled resize mode: Mod+RMB drag adjusts mfact instead of floating |
| 349 |
|
- |
-- oxwm.tiled_resize_mode(true) |
| 350 |
|
- |
-- Increment/Decrement number of master windows |
| 351 |
|
- |
--oxwm.key.bind({ modkey }, "I", oxwm.inc_num_master(1)) |
| 352 |
|
- |
--oxwm.key.bind({ modkey }, "P", oxwm.inc_num_master(-1)) |
| 353 |
|
- |
|
| 354 |
|
- |
-- Gaps toggle |
| 355 |
|
- |
oxwm.key.bind({ modkey }, "A", oxwm.toggle_gaps()) |
| 356 |
|
- |
-- Bar toggle |
| 357 |
|
- |
oxwm.key.bind({ modkey }, "B", oxwm.toggle_bar()) |
| 358 |
|
- |
|
| 359 |
|
- |
-- Window manager controls |
| 360 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "Q", oxwm.quit()) |
| 361 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "R", oxwm.restart()) |
| 362 |
|
- |
|
| 363 |
|
- |
-- Focus movement [1 for up in the stack, -1 for down] |
| 364 |
|
- |
oxwm.key.bind({ modkey }, "J", oxwm.client.focus_stack(1)) |
| 365 |
|
- |
oxwm.key.bind({ modkey }, "K", oxwm.client.focus_stack(-1)) |
| 366 |
|
- |
|
| 367 |
|
- |
-- Window movement (swap position in stack) |
| 368 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "J", oxwm.client.move_stack(1)) |
| 369 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "K", oxwm.client.move_stack(-1)) |
| 370 |
|
- |
|
| 371 |
|
- |
-- Multi-monitor support |
| 372 |
|
- |
|
| 373 |
|
- |
-- Focus next/previous Monitors |
| 374 |
|
- |
oxwm.key.bind({ modkey }, "Comma", oxwm.monitor.focus(-1)) |
| 375 |
|
- |
oxwm.key.bind({ modkey }, "Period", oxwm.monitor.focus(1)) |
| 376 |
|
- |
-- Move window to next/previous Monitors |
| 377 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "Comma", oxwm.monitor.tag(-1)) |
| 378 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "Period", oxwm.monitor.tag(1)) |
| 379 |
|
- |
|
| 380 |
|
- |
-- Warp the cursor to the focused monitor when switching monitors |
| 381 |
|
- |
-- oxwm.monitor.warp_cursor(true) |
| 382 |
|
- |
-- Warp the cursor along when sending a window to another monitor |
| 383 |
|
- |
-- oxwm.monitor.warp_cursor_on_send(true) |
| 384 |
|
- |
|
| 385 |
|
- |
-- Workspace (tag) navigation |
| 386 |
|
- |
-- Switch to workspace N (tags are 0-indexed, so tag "1" is index 0) |
| 387 |
|
- |
oxwm.key.bind({ modkey }, "1", oxwm.tag.view(0)) |
| 388 |
|
- |
oxwm.key.bind({ modkey }, "2", oxwm.tag.view(1)) |
| 389 |
|
- |
oxwm.key.bind({ modkey }, "3", oxwm.tag.view(2)) |
| 390 |
|
- |
oxwm.key.bind({ modkey }, "4", oxwm.tag.view(3)) |
| 391 |
|
- |
oxwm.key.bind({ modkey }, "5", oxwm.tag.view(4)) |
| 392 |
|
- |
oxwm.key.bind({ modkey }, "6", oxwm.tag.view(5)) |
| 393 |
|
- |
oxwm.key.bind({ modkey }, "7", oxwm.tag.view(6)) |
| 394 |
|
- |
oxwm.key.bind({ modkey }, "8", oxwm.tag.view(7)) |
| 395 |
|
- |
oxwm.key.bind({ modkey }, "9", oxwm.tag.view(8)) |
| 396 |
|
- |
-- Tags 10-12 (opt-in): set 12 tags above, then pick keys you like and uncomment. |
| 397 |
|
- |
-- oxwm.key.bind({ modkey }, "0", oxwm.tag.view(9)) |
| 398 |
|
- |
-- oxwm.key.bind({ modkey }, "minus", oxwm.tag.view(10)) |
| 399 |
|
- |
-- oxwm.key.bind({ modkey }, "equal", oxwm.tag.view(11)) |
| 400 |
|
- |
|
| 401 |
|
- |
-- Move focused window to workspace N |
| 402 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "1", oxwm.tag.move_to(0)) |
| 403 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "2", oxwm.tag.move_to(1)) |
| 404 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "3", oxwm.tag.move_to(2)) |
| 405 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "4", oxwm.tag.move_to(3)) |
| 406 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "5", oxwm.tag.move_to(4)) |
| 407 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "6", oxwm.tag.move_to(5)) |
| 408 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "7", oxwm.tag.move_to(6)) |
| 409 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "8", oxwm.tag.move_to(7)) |
| 410 |
|
- |
oxwm.key.bind({ modkey, "Shift" }, "9", oxwm.tag.move_to(8)) |
| 411 |
|
- |
-- oxwm.key.bind({ modkey, "Shift" }, "0", oxwm.tag.move_to(9)) |
| 412 |
|
- |
-- oxwm.key.bind({ modkey, "Shift" }, "minus", oxwm.tag.move_to(10)) |
| 413 |
|
- |
-- oxwm.key.bind({ modkey, "Shift" }, "equal", oxwm.tag.move_to(11)) |
| 414 |
|
- |
|
| 415 |
|
- |
-- Combo view (view multiple tags at once) {argos_nothing} |
| 416 |
|
- |
-- Example: Mod+Ctrl+2 while on tag 1 will show BOTH tags 1 and 2 |
| 417 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "1", oxwm.tag.toggleview(0)) |
| 418 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "2", oxwm.tag.toggleview(1)) |
| 419 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "3", oxwm.tag.toggleview(2)) |
| 420 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "4", oxwm.tag.toggleview(3)) |
| 421 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "5", oxwm.tag.toggleview(4)) |
| 422 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "6", oxwm.tag.toggleview(5)) |
| 423 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "7", oxwm.tag.toggleview(6)) |
| 424 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "8", oxwm.tag.toggleview(7)) |
| 425 |
|
- |
oxwm.key.bind({ modkey, "Control" }, "9", oxwm.tag.toggleview(8)) |
| 426 |
|
- |
-- oxwm.key.bind({ modkey, "Control" }, "0", oxwm.tag.toggleview(9)) |
| 427 |
|
- |
-- oxwm.key.bind({ modkey, "Control" }, "minus", oxwm.tag.toggleview(10)) |
| 428 |
|
- |
-- oxwm.key.bind({ modkey, "Control" }, "equal", oxwm.tag.toggleview(11)) |
| 429 |
|
- |
|
| 430 |
|
- |
-- Multi tag (window on multiple tags) |
| 431 |
|
- |
-- Example: Mod+Ctrl+Shift+2 puts focused window on BOTH current tag and tag 2 |
| 432 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "1", oxwm.tag.toggletag(0)) |
| 433 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "2", oxwm.tag.toggletag(1)) |
| 434 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "3", oxwm.tag.toggletag(2)) |
| 435 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "4", oxwm.tag.toggletag(3)) |
| 436 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "5", oxwm.tag.toggletag(4)) |
| 437 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "6", oxwm.tag.toggletag(5)) |
| 438 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "7", oxwm.tag.toggletag(6)) |
| 439 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "8", oxwm.tag.toggletag(7)) |
| 440 |
|
- |
oxwm.key.bind({ modkey, "Control", "Shift" }, "9", oxwm.tag.toggletag(8)) |
| 441 |
|
- |
-- oxwm.key.bind({ modkey, "Control", "Shift" }, "0", oxwm.tag.toggletag(9)) |
| 442 |
|
- |
-- oxwm.key.bind({ modkey, "Control", "Shift" }, "minus", oxwm.tag.toggletag(10)) |
| 443 |
|
- |
-- oxwm.key.bind({ modkey, "Control", "Shift" }, "equal", oxwm.tag.toggletag(11)) |
| 444 |
|
- |
|
| 445 |
|
- |
------------------------------------------------------------------------------- |
| 446 |
|
- |
-- Advanced: Keychords |
| 447 |
|
- |
------------------------------------------------------------------------------- |
| 448 |
|
- |
-- Keychords allow you to bind multiple-key sequences (like Emacs or Vim) |
| 449 |
|
- |
-- Format: {{modifiers}, key1}, {{modifiers}, key2}, ... |
| 450 |
|
- |
-- Example: Press Mod4+Space, then release and press T to spawn a terminal |
| 451 |
|
- |
oxwm.key.chord({ |
| 452 |
|
- |
{ { modkey }, "Space" }, |
| 453 |
|
- |
{ {}, "T" } |
| 454 |
|
- |
}, oxwm.spawn_terminal()) |
| 455 |
|
- |
|
| 456 |
|
- |
------------------------------------------------------------------------------- |
| 457 |
|
- |
-- Autostart |
| 458 |
|
- |
------------------------------------------------------------------------------- |
| 459 |
|
- |
-- Commands to run once when OXWM starts |
| 460 |
|
- |
-- Uncomment and modify these examples, or add your own |
| 461 |
|
- |
|
| 462 |
|
- |
-- Clipboard history daemon. Without it Mod+V has nothing to show: an X |
| 463 |
|
- |
-- selection lives in the process that owns it, so a copied string dies with |
| 464 |
|
- |
-- the window it was copied from unless something keeps its own copy. |
| 465 |
|
- |
oxwm.autostart(rofi_scripts .. "/rofi-clipd") |
| 466 |
|
- |
|
| 467 |
|
- |
-- oxwm.autostart("picom") |
| 468 |
|
- |
-- oxwm.autostart("feh --bg-scale ~/wallpaper.jpg") |
| 469 |
|
- |
-- oxwm.autostart("dunst") |
| 470 |
|
- |
-- oxwm.autostart("nm-applet") |