summaryrefslogtreecommitdiffstats
path: root/.sawfish
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2012-11-21 01:23:32 +0100
committerGravatar Tom Willemsen2012-11-21 01:23:32 +0100
commitfa717d86a07d009ab324a40cd8dbf539e61a9da3 (patch)
tree94c8970eff710864d3162bb7b14476e6fba8280c /.sawfish
parent258cda86caf88bcfb16aa7ab59f790f249b92d63 (diff)
parentc545bedf7fa756531b0c486845a6f9af36a83eb2 (diff)
downloaddotfiles-fa717d86a07d009ab324a40cd8dbf539e61a9da3.tar.gz
dotfiles-fa717d86a07d009ab324a40cd8dbf539e61a9da3.zip
Merge remote-tracking branch 'origin/master' into phoenix
Diffstat (limited to '.sawfish')
-rw-r--r--.sawfish/rc162
1 files changed, 91 insertions, 71 deletions
diff --git a/.sawfish/rc b/.sawfish/rc
index 23fd5e6..684ce1d 100644
--- a/.sawfish/rc
+++ b/.sawfish/rc
@@ -1,47 +1,103 @@
+;; -*- mode: sawfish; -*-
+(require 'rep.regexp)
+(require 'sawfish.wm.commands.grow-pack)
+(require 'sawfish.wm.commands.shrink-yank)
+(require 'sawfish.wm.ext.match-window)
+(require 'sawfish.wm.util.display-window)
+(require 'sawfish.wm.util.prompt)
+(require 'sawfish.wm.util.window-order)
+(require 'sawfish.wm.commands.x-cycle)
+
+(define oni:window-packing-keymap (make-keymap))
+(define oni:window-growing-keymap (make-keymap))
+(define oni:window-shrinking-keymap (make-keymap))
+(define oni:window-yanking-keymap (make-keymap))
+(define oni:window-management-keymap (make-keymap))
+(define oni:extended-keymap (make-keymap))
+
+(defun oni:emacs-main-window-p (window)
+ "Check wether or not WINDOW is Emacs' main window."
+ (let ((name (window-name window)))
+ (and (string-match "^emacs: " name)
+ (not (string= "emacs: *Sauron*" name)))))
+
+(defun oni:place-emacs-windows ()
+ "Place Emacs' main, sauron and optionally speedbar windows the
+way I like them."
+ (let ((main-window (car (filter-windows oni:emacs-main-window-p)))
+ (sauron-window (get-window-by-name "emacs: *Sauron*"))
+ (speedbar-window (get-window-by-name "^Speedbar " #:regex t)))
+ (move-window-to main-window 0 0)
+ (move-window-to sauron-window 0 0)
+
+ (set-window-type sauron-window 'transient)
+ (pack-window-down sauron-window)
+ (grow-window-right sauron-window)
+
+ (when speedbar-window
+ (move-window-to speedbar-window 0 0)
+ (set-window-type speedbar-window 'transient)
+ (yank-window-right main-window)
+ (grow-window-down speedbar-window))
+
+ (grow-window-down main-window)
+ (grow-window-right main-window)))
+
+(define-command 'oni:place-emacs-windows oni:place-emacs-windows)
+
+(defun oni:run-or-raise (command #!key id name class role)
+ "Either run COMMAND, or if a window with class CLASS is found,
+raise it."
+ (let* ((windows (filter
+ (lambda (x)
+ (and (or (not id) (equal (window-id x) id))
+ (or (not name (equal (window-name x) name)))
+ (or (not class) (equal (window-class x) class))
+ (or (not role) (equal (window-role x) role))))
+ (window-order)))
+ (first (car windows))
+ (w (if (equal first (input-focus)) (last windows) first)))
+ (if w (display-window w)
+ (call-command `(run-shell-command ,command)))))
+
+(setq default-frame-style 'naquadah)
+(setq prompt-color (cons (get-color "#eeeeec")
+ (get-color "#111113")))
(setq user-apps-menu
'(("Emacs" (system "emacsclient -c &"))
("Terminal" (system "urxvt &"))))
-(define oni:window-packing-keymap (make-keymap))
-
(bind-keys oni:window-packing-keymap
"p" 'pack-window-up
"n" 'pack-window-down
"b" 'pack-window-left
"f" 'pack-window-right)
-(define oni:window-growing-keymap (make-keymap))
-
(bind-keys oni:window-growing-keymap
"p" 'grow-window-up
"n" 'grow-window-down
"b" 'grow-window-left
"f" 'grow-window-right)
-(define oni:window-shrinking-keymap (make-keymap))
-
(bind-keys oni:window-shrinking-keymap
"p" 'shrink-window-up
"n" 'shrink-window-down
"b" 'shrink-window-left
"f" 'shrink-window-right)
-(define oni:window-yanking-keymap (make-keymap))
-
(bind-keys oni:window-yanking-keymap
"p" 'yank-window-up
"n" 'yank-window-down
"b" 'yank-window-left
"f" 'yank-window-right)
-(define oni:window-management-keymap (make-keymap))
-
(bind-keys oni:window-management-keymap
"M" 'maximize-window-toggle
"p" oni:window-packing-keymap
"g" oni:window-growing-keymap
"s" oni:window-shrinking-keymap
- "y" oni:window-yanking-keymap)
+ "y" oni:window-yanking-keymap
+ "E" 'oni:place-emacs-windows)
(bind-keys global-keymap
"XF86AudioPlay" '(run-shell-command "mpc toggle")
@@ -52,68 +108,32 @@
"XF86AudioPrev" '(run-shell-command "mpc prev")
"XF86AudioNext" '(run-shell-command "mpc next"))
-(require 'sawfish.wm.util.prompt)
-
-(define oni:extended-keymap (make-keymap))
-
(bind-keys oni:extended-keymap
- "w" oni:window-management-keymap)
+ "w" oni:window-management-keymap
+ "Super-b" 'popup-window-list-menu)
;; (ungrab-keymap global-keymap)
-(bind-keys global-keymap
- "Super-!" '(run-shell-command (prompt-for-string "Run: "))
- "C-M-l" '(run-shell-command "i3lock -c \"#000000\"")
- "Super-e" '(run-shell-command (getenv "EDITOR"))
- "Super-w" '(run-shell-command (getenv "BROWSER"))
- "Super-c" '(run-shell-command "urxvt")
- "Super-TAB" 'cycle-windows
- "Super-x" oni:extended-keymap
- "Menu" 'popup-root-menu)
+(bind-keys
+ global-keymap
+ "Super-!" '(run-shell-command (prompt-for-string "Run: "))
+ "C-M-l" '(run-shell-command "i3lock -c \"#000000\"")
+ "Super-e" '(oni:run-or-raise (getenv "EDITOR") #:class "Emacs")
+ "Super-E" '(run-shell-command (getenv "EDITOR"))
+ "Super-w" '(oni:run-or-raise (getenv "BROWSER") #:class "Conkeror")
+ "Super-W" '(run-shell-command (getenv "BROWSER"))
+ "Super-c" '(oni:run-or-raise "urxvt" #:class "URxvt")
+ "Super-C" '(run-shell-command "urxvt")
+ "Super-TAB" 'cycle-windows
+ "C-Super-TAB" 'cycle-class
+ "Super-x" oni:extended-keymap
+ "Super-f" 'pack-window-right
+ "Super-b" 'pack-window-left
+ "Super-n" 'pack-window-down
+ "Super-p" 'pack-window-up
+ "Menu" 'popup-root-menu
+ "Super-M" 'maximize-window-toggle)
;; (grab-keymap global-keymap)
-(setq prompt-color (cons (get-color "#eeeeec")
- (get-color "#252e2b")))
-
-(setq default-frame-style 'naquadah)
-
-(require 'sawfish.wm.ext.match-window)
-
-(add-window-matcher '((WM_CLASS . "^Firefox/Navigator$"))
- '((position . north-east)))
-
-(require 'rep.regexp)
-(require 'sawfish.wm.commands.grow-pack)
-(require 'sawfish.wm.commands.shrink-yank)
-
-(defun oni:emacs-main-window-p (window)
- "Check wether or not WINDOW is Emacs' main window."
- (let ((name (window-name window)))
- (and (string-match "^emacs: " name)
- (not (string= "emacs: *Sauron*" name)))))
-
-(defun oni:place-emacs-windows ()
- "Place Emacs' main, sauron and optionally speedbar windows the
-way I like them."
- (let ((main-window (car (filter-windows oni:emacs-main-window-p)))
- (sauron-window (get-window-by-name "emacs: *Sauron*"))
- (speedbar-window (get-window-by-name "^Speedbar " #:regex t)))
- (move-window-to main-window 0 0)
- (move-window-to sauron-window 0 0)
-
- (set-window-type sauron-window 'transient)
- (pack-window-down sauron-window)
- (grow-window-right sauron-window)
-
- (when speedbar-window
- (move-window-to speedbar-window 0 0)
- (set-window-type speedbar-window 'transient)
- (yank-window-right main-window)
- (grow-window-down speedbar-window))
-
- (grow-window-down main-window)
- (grow-window-right main-window)))
-
-(define-command 'oni:place-emacs-windows oni:place-emacs-windows)
-
-(bind-keys oni:window-management-keymap
- "E" 'oni:place-emacs-windows)
+(add-window-matcher '((WM_CLASS . "^(Firefox|Conkeror)/Navigator$"))
+ '((position . north-east)
+ (maximized . all)))