diff options
-rw-r--r-- | init.scm | 19 | ||||
-rw-r--r-- | schewm.c | 5 | ||||
-rw-r--r-- | wm.scm | 5 |
3 files changed, 25 insertions, 4 deletions
@@ -19,12 +19,27 @@ "#0d131a" ; outer-color )) -(define (make-callback proc arg) - (lambda () (proc arg))) +(define (make-callback proc . args) + (lambda () (apply proc args))) + +(define terminal-cmd "xterm") + +(define menu-raw-callback + (make-callback wm-exec-cmd "bemenu" "-b" "-s" "-l" "10" "-p" ">>>")) + +(define menu-callback + (make-callback + wm-exec-cmd + "j4-dmenu-desktop" + "--dmenu=bemenu -b -i -s -l 10 -p >>>" + (string-append "--term=" terminal-cmd))) (define wm-keybindings `((,(make-shift-key "q") . ,wm-quit) (,(make-key "q") . ,wm-focus-close) + (,(make-shift-key "p") . ,menu-raw-callback) + (,(make-key "p") . ,menu-callback) + (,(make-key "Enter") . ,(make-callback wm-exec-cmd terminal-cmd)) ;; Focus (,(make-key "Tab") . ,wm-focus-prev) (,(make-shift-key "Tab") . ,wm-focus-next) @@ -2475,7 +2475,7 @@ enum TileType { TILE_BOTTOM_RIGHT, }; -void +static void wm_toggle_tile(enum TileType tile_type) { if (wm.focus == NULL) { return; @@ -2485,7 +2485,8 @@ wm_toggle_tile(enum TileType tile_type) { if (wm.focus->has_old_size) { client_restore_size(wm.focus); dpy_update_window_geometry(wm.focus); - } else { + dpy_draw_focused_borders(wm.focus); + } else { struct Rect rect; // Start with monitor size, then reduce to appropriate target size wm_client_monitor_size(wm.focus, true, &rect); @@ -11,6 +11,7 @@ wm-grab-key-with-mod wm-grab-key-with-mod-shift wm-set-key-press-handler! + wm-exec-cmd wm-focus-prev wm-focus-next wm-focus-close @@ -240,3 +241,7 @@ (procedure->pointer void handler (list uint16 uint32)))) + +(define (wm-exec-cmd . args) + (when (eq? (primitive-fork) 0) + (apply execlp (cons (car args) args)))) |