@@ -15,6 +15,7 @@ pub enum Action { |
| 15 | 15 | Swap(String), |
| 16 | 16 | Resize(String, f32), |
| 17 | 17 | CloseWindow, |
| 18 | + ForceCloseWindow, // Force kill without asking nicely |
| 18 | 19 | Workspace(usize), |
| 19 | 20 | MoveToWorkspace(usize), |
| 20 | 21 | Equalize, |
@@ -265,6 +266,7 @@ impl LuaConfig { |
| 265 | 266 | if let Ok(action_type) = t.get::<String>("action") { |
| 266 | 267 | match action_type.as_str() { |
| 267 | 268 | "close_window" => Action::CloseWindow, |
| 269 | + "force_close_window" => Action::ForceCloseWindow, |
| 268 | 270 | "reload" => Action::Reload, |
| 269 | 271 | "exit" => Action::Exit, |
| 270 | 272 | "equalize" => Action::Equalize, |
@@ -399,6 +401,11 @@ impl LuaConfig { |
| 399 | 401 | close_window.set("action", "close_window")?; |
| 400 | 402 | gar.set("close_window", close_window)?; |
| 401 | 403 | |
| 404 | + // gar.force_close_window - force kill without asking nicely |
| 405 | + let force_close = self.lua.create_table()?; |
| 406 | + force_close.set("action", "force_close_window")?; |
| 407 | + gar.set("force_close_window", force_close)?; |
| 408 | + |
| 402 | 409 | // gar.reload |
| 403 | 410 | let reload = self.lua.create_table()?; |
| 404 | 411 | reload.set("action", "reload")?; |
@@ -547,6 +554,18 @@ fn parse_keyspec(spec: &str) -> Option<(ModMask, u32)> { |
| 547 | 554 | "f10" => 0xffc7, |
| 548 | 555 | "f11" => 0xffc8, |
| 549 | 556 | "f12" => 0xffc9, |
| 557 | + // Punctuation |
| 558 | + "comma" => 0x2c, |
| 559 | + "period" => 0x2e, |
| 560 | + "semicolon" => 0x3b, |
| 561 | + "apostrophe" => 0x27, |
| 562 | + "bracketleft" => 0x5b, |
| 563 | + "bracketright" => 0x5d, |
| 564 | + "backslash" => 0x5c, |
| 565 | + "slash" => 0x2f, |
| 566 | + "minus" => 0x2d, |
| 567 | + "equal" => 0x3d, |
| 568 | + "grave" => 0x60, |
| 550 | 569 | // Numbers |
| 551 | 570 | "0" => 0x30, |
| 552 | 571 | "1" => 0x31, |