From 92a57db6f2fb54d70e5da00aaabc6af752ee07a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Sat, 26 May 2012 13:41:06 -0400 Subject: [PATCH] shell: Add keybinding to force-close (SIGKILL) inactive clients --- src/shell.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/shell.c b/src/shell.c index b37de80f..e1f3a049 100644 --- a/src/shell.c +++ b/src/shell.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "compositor.h" @@ -2574,6 +2575,24 @@ debug_repaint_binding(struct wl_seat *seat, uint32_t time, } } +static void +force_kill_binding(struct wl_seat *seat, uint32_t time, + uint32_t key, uint32_t button, uint32_t axis, + int32_t value, void *data) +{ + struct wl_client *client; + pid_t pid; + uid_t uid; + gid_t gid; + + if (value == 1) { + client = seat->keyboard->focus->resource.client; + wl_client_get_credentials(client, &pid, &uid, &gid); + + kill(pid, SIGKILL); + } +} + static void shell_destroy(struct wl_listener *listener, void *data) { @@ -2633,6 +2652,8 @@ shell_add_bindings(struct weston_compositor *ec, struct desktop_shell *shell) backlight_binding, ec); weston_compositor_add_binding(ec, KEY_SPACE, 0, 0, mod, debug_repaint_binding, shell); + weston_compositor_add_binding(ec, KEY_K, 0, 0, mod, + force_kill_binding, shell); } int