- added shortcuts to cycle through the clients, and to hide/show the pager
This commit is contained in:
parent
d06743740e
commit
fae255085c
|
@ -1,5 +1,6 @@
|
||||||
(define-record-type move-wm-pager :move-wm-pager
|
(define-record-type move-wm-pager :move-wm-pager
|
||||||
(make-move-wm-pager dpy window wm in-channel options buttons-alist width)
|
(make-move-wm-pager dpy window wm in-channel options buttons-alist width
|
||||||
|
visible?)
|
||||||
move-wm-pager?
|
move-wm-pager?
|
||||||
(dpy pager:dpy)
|
(dpy pager:dpy)
|
||||||
(window pager:window)
|
(window pager:window)
|
||||||
|
@ -8,7 +9,8 @@
|
||||||
(options pager:options)
|
(options pager:options)
|
||||||
;; client -> button
|
;; client -> button
|
||||||
(buttons-alist pager:buttons-alist set-pager:buttons-alist!)
|
(buttons-alist pager:buttons-alist set-pager:buttons-alist!)
|
||||||
(width pager:width set-pager:width!))
|
(width pager:width set-pager:width!)
|
||||||
|
(visible? pager:visible? set-pager:visible!))
|
||||||
|
|
||||||
;; TODO: hide buttons/keys
|
;; TODO: hide buttons/keys
|
||||||
;; TODO: client-name <-> WM_ICON_NAME?
|
;; TODO: client-name <-> WM_ICON_NAME?
|
||||||
|
@ -35,7 +37,7 @@
|
||||||
(gc (create-gc dpy window '()))
|
(gc (create-gc dpy window '()))
|
||||||
(colormap (screen:default-colormap (display:default-screen dpy)))
|
(colormap (screen:default-colormap (display:default-screen dpy)))
|
||||||
(pager (make-move-wm-pager dpy window wm in-channel options '()
|
(pager (make-move-wm-pager dpy window wm in-channel options '()
|
||||||
(rectangle:width rect))))
|
(rectangle:width rect) #t)))
|
||||||
(spawn*
|
(spawn*
|
||||||
(list 'move-wm-pager wm window)
|
(list 'move-wm-pager wm window)
|
||||||
(lambda (release)
|
(lambda (release)
|
||||||
|
@ -212,3 +214,9 @@
|
||||||
(button (cdr c.b)))
|
(button (cdr c.b)))
|
||||||
(pager-update-button pager button client)))
|
(pager-update-button pager button client)))
|
||||||
(pager:buttons-alist pager)))
|
(pager:buttons-alist pager)))
|
||||||
|
|
||||||
|
(define (pager-change-visibility pager)
|
||||||
|
(set-pager:visible! pager (not (pager:visible? pager)))
|
||||||
|
(if (not (pager:visible? pager))
|
||||||
|
(unmap-window (pager:dpy pager) (pager:window pager))
|
||||||
|
(map-window (pager:dpy pager) (pager:window pager))))
|
||||||
|
|
|
@ -12,6 +12,9 @@
|
||||||
'("#808080" "#aaaaaa" "#eeeeee" "#777777" "black"))
|
'("#808080" "#aaaaaa" "#eeeeee" "#777777" "black"))
|
||||||
(pager-maximum-button-width int 140)
|
(pager-maximum-button-width int 140)
|
||||||
(pager-height int 24)
|
(pager-height int 24)
|
||||||
|
(select-next keys "M-Tab")
|
||||||
|
(select-previous keys "M-S-Tab") ;; or ISO_Left_Tab ?
|
||||||
|
(hide-show-pager keys "M-p")
|
||||||
)
|
)
|
||||||
|
|
||||||
(define (create-move-wm out-channel dpy parent options default-options
|
(define (create-move-wm out-channel dpy parent options default-options
|
||||||
|
@ -30,7 +33,13 @@
|
||||||
(window (wm:window wm))
|
(window (wm:window wm))
|
||||||
(gc (create-gc dpy window '()))
|
(gc (create-gc dpy window '()))
|
||||||
(pager-channel (make-channel))
|
(pager-channel (make-channel))
|
||||||
(pager (create-move-wm-pager wm pager-channel (wm:options wm))))
|
(options (wm:options wm))
|
||||||
|
(pager (create-move-wm-pager wm pager-channel options)))
|
||||||
|
(for-each (lambda (id)
|
||||||
|
(grab-shortcut dpy window
|
||||||
|
(get-option-value options id)
|
||||||
|
id channel #f))
|
||||||
|
'(select-next select-previous hide-show-pager))
|
||||||
(spawn* (list 'move-wm wm)
|
(spawn* (list 'move-wm wm)
|
||||||
(lambda (release)
|
(lambda (release)
|
||||||
(release)
|
(release)
|
||||||
|
@ -217,6 +226,22 @@
|
||||||
(raise-window dpy (client:client-window c)))
|
(raise-window dpy (client:client-window c)))
|
||||||
clients)))
|
clients)))
|
||||||
|
|
||||||
|
((select-next select-previous)
|
||||||
|
(let* ((time (second msg))
|
||||||
|
(cc (wm-current-client wm))
|
||||||
|
(clients (if (eq? (first msg) 'select-next)
|
||||||
|
(wm-clients wm)
|
||||||
|
(reverse (wm-clients wm)))))
|
||||||
|
(let loop ((l (append clients clients)))
|
||||||
|
(and (not (null? l))
|
||||||
|
(if (eq? (car l) cc)
|
||||||
|
(and (not (null? (cdr l)))
|
||||||
|
(wm-select-client wm (cadr l) time))
|
||||||
|
(loop (cdr l)))))))
|
||||||
|
|
||||||
|
((hide-show-pager)
|
||||||
|
(pager-change-visibility pager))
|
||||||
|
|
||||||
(else (warn "unhandled move-wm message" wm msg)))))
|
(else (warn "unhandled move-wm message" wm msg)))))
|
||||||
|
|
||||||
(define (make-client-data titlebar resizer)
|
(define (make-client-data titlebar resizer)
|
||||||
|
|
Loading…
Reference in New Issue