;;; -*- sawfish -*-
;;; My personal settings for Sawfish WM
;;; Copyright Guillermo S. Romero, 2000,2001

;;; Require packages here
;; Merlin rocks!
(require 'merlin.ugliness)

; (require 'bap-cursor-colors)
; (bap-recolor-cursors)
; (require 'bap-legacy)

; (require 'window-info)
; (bind-keys window-keymap "A-D" show-window-props)

;; My use of GNOME is small, but anyway
(require 'gnome)

; (require 'sawfish-defaults)

;; Workspaces with names and fine look
(require 'ws-num)
;; I do not use all of them, but is a good excuse to have the list ;]
(setq workspace-names '("Alpha" "Bravo" "Charlie" "Delta" "Echo" "Foxtrot"
                        "Golf" "Hotel" "India" "Juliet" "Kilo" "Lima" "Mike"
                        "November" "Oscar" "Papa" "Quebec" "Romeo" "Sierra"
                        "Tango" "Uniform" "Victor" "Whisky" "X-Ray" "Yankee"
                        "Zulu"))

;; Collection of functions, until they get a separate place
(require 'gsr.misc)

;; Services, aka read X selection and do something with it
(require 'services)
(services-add "Dictionary" "xterm -T 'dict: #' -e dict -P less #")

;;; Personal keybindings, so I can avoid GUI
; (custom-set-typed-variable
;  (quote wm-modifier-value)
;  (quote (hyper))
;  (quote modifier-list))

;;; Window keymap
;; Quoting, just in case a key combo is also used by Sawfish
(bind-keys window-keymap "H-q" 'quote-event)
;; Fast resizing
(bind-keys window-keymap "H-n" '(gsr-resize-window-to-dimensions 800 600))
(bind-keys window-keymap "H-m" '(gsr-resize-window-to-dimensions 1024 768))
;; Maximizes
(bind-keys window-keymap "H-b" 'gsr-maximize-fullscreen-window-toggle)
(bind-keys window-keymap "H-C-b" 'maximize-window-toggle)
(bind-keys window-keymap "H-h" 'gsr-maximize-full-horizontal-window-toggle)
(bind-keys window-keymap "H-C-h" 'maximize-window-horizontally-toggle)
(bind-keys window-keymap "H-v" 'gsr-maximize-full-vertical-window-toggle)
(bind-keys window-keymap "H-C-v" 'maximize-window-vertically-toggle)
;; Misc ops
(bind-keys window-keymap "H-z" 'iconify-window)
(bind-keys window-keymap "H-s" 'toggle-window-shaded)
(bind-keys window-keymap "H-w" 'popup-window-menu)
(bind-keys window-keymap "H-C-Q" 'delete-window)
;; Mouse based ops
(bind-keys window-keymap "H-Button1-Move" 'move-window-interactively)
(bind-keys window-keymap "H-Button2-Click1" 'popup-window-menu)
(bind-keys window-keymap "H-Button3-Click1" 'raise-lower-window-and-transients)
(bind-keys window-keymap "S-H-Button3-Click1" 'raise-window-and-transients)
(bind-keys window-keymap "C-H-Button3-Click1" 'lower-window-and-transients)
;; Keyboard movement, big steps
(bind-keys window-keymap "H-Down" '(gsr-slide-window-down 16))
(bind-keys window-keymap "H-Right" '(gsr-slide-window-right 16))
(bind-keys window-keymap "H-Up" '(gsr-slide-window-up 16))
(bind-keys window-keymap "H-Left" '(gsr-slide-window-left 16))
;; Keyboard movement, small steps
(bind-keys window-keymap "H-C-Down" '(gsr-slide-window-down 1))
(bind-keys window-keymap "H-C-Right" '(gsr-slide-window-right 1))
(bind-keys window-keymap "H-C-Up" '(gsr-slide-window-up 1))
(bind-keys window-keymap "H-C-Left" '(gsr-slide-window-left 1))
;; Keyboard "bump into next obstacle" movement
(bind-keys window-keymap "H-S-Down" 'pack-window-down)
(bind-keys window-keymap "H-S-Right" 'pack-window-right)
(bind-keys window-keymap "H-S-Up" 'pack-window-up)
(bind-keys window-keymap "H-S-Left" 'pack-window-left)
;; Keyboard "bump into next obstacle" resizes
(bind-keys window-keymap "H-C-S-Down" 'grow-window-down)
(bind-keys window-keymap "H-C-S-Right" 'grow-window-right)
(bind-keys window-keymap "H-C-S-Up" 'pack-window-up)
(bind-keys window-keymap "H-C-S-Left" 'pack-window-left)
;; Move window and change viewport, all in one
(bind-keys window-keymap "H-C-F1" '(gsr-move-window-and-viewport 1 1))
(bind-keys window-keymap "H-C-F2" '(gsr-move-window-and-viewport 2 1))
(bind-keys window-keymap "H-C-F3" '(gsr-move-window-and-viewport 1 2))
(bind-keys window-keymap "H-C-F4" '(gsr-move-window-and-viewport 2 2))
;; Move window and change desktop, all in one
(bind-keys window-keymap "H-C-F5" '(send-to-workspace 1))
(bind-keys window-keymap "H-C-F6" '(send-to-workspace 2))
(bind-keys window-keymap "H-C-F7" '(send-to-workspace 3))
(bind-keys window-keymap "H-C-F8" '(send-to-workspace 4))
;; Change depth
(bind-keys window-keymap "H-r" 'raise-window-and-transients)
(bind-keys window-keymap "H-d" 'lower-window-and-transients)

;;; Border keymap
(bind-keys border-keymap "Button1-Off" 'raise-window)
(bind-keys border-keymap "Button1-Move" 'resize-window-interactively)
(bind-keys border-keymap "Button2-Move" 'move-window-interactively)
(bind-keys border-keymap "Button3-Off" 'raise-lower-window-and-transients)
(bind-keys border-keymap "S-Button3-Off" 'raise-window-and-transients)
(bind-keys border-keymap "C-Button3-Off" 'lower-window-and-transients)

;;; Title keymap
(bind-keys title-keymap "Button1-Move" 'move-window-interactively)
(bind-keys title-keymap "Button1-Off" 'raise-window)
(bind-keys title-keymap "Button1-Click2" 'toggle-window-shaded)
(bind-keys title-keymap "Button2-Move" 'resize-window-interactively)
(bind-keys title-keymap "Button2-Click2" 'popup-window-menu)
(bind-keys title-keymap "Button3-Off" 'raise-lower-window-and-transients)
(bind-keys title-keymap "S-Button3-Off" 'raise-window-and-transients)
(bind-keys title-keymap "C-Button3-Off" 'lower-window-and-transients)

;;; Close button keymap
;; Overloaded
(bind-keys close-button-keymap "Button1-Off" 'delete-window)
(bind-keys close-button-keymap "Button2-Off" 'destroy-window)
(bind-keys close-button-keymap "Button3-Click1" 'popup-window-menu)

;;; Shade button keymap
;; Overloaded
(bind-keys shade-button-keymap "Button1-Off" 'toggle-window-shaded)
(bind-keys shade-button-keymap "Button2-Off" 'iconify-window)
(bind-keys shade-button-keymap "Button3-Click" 'popup-window-menu)

;;; Iconify button keymap
;; Overloaded
(bind-keys iconify-button-keymap "Button1-Off" 'iconify-window)
(bind-keys iconify-button-keymap "Button2-Off" 'toggle-window-shaded)
(bind-keys iconify-button-keymap "Button3-Click1" 'popup-window-menu)

;;; Maximize button keymap
;; Overloaded
(bind-keys maximize-button-keymap "Button1-Off" 'gsr-maximize-fullscreen-window-toggle)
(bind-keys maximize-button-keymap "S-Button2-Off" 'maximize-window-vertically-toggle)
(bind-keys maximize-button-keymap "H-Button2-Off" 'maximize-window-horizontally-toggle)
(bind-keys maximize-button-keymap "Button2-Off" 'maximize-window-toggle)
(bind-keys maximize-button-keymap "Button3-Click1" 'popup-window-menu)

;;; Root window keymap
;; Sawfish menu in MB2
(bind-keys root-window-keymap "Button2-Click1" 'popup-root-menu)

;;; Global keymap, anywhere anytime
;; Sawfish menu
(bind-keys global-keymap "H-a" 'popup-root-menu)
;; A basic keybinding for me
(bind-keys global-keymap "H-t" '(run-shell-command "xterm"))
;; Lock screen quickly
(bind-keys global-keymap "H-C-L" '(run-shell-command "xlock"))
;; Cycling
(bind-keys global-keymap "H-ISO_Left_Tab" 'cycle-windows-backwards)
(bind-keys global-keymap "H-TAB" 'cycle-windows)
;; Change desktop
(bind-keys global-keymap "H-F8" '(activate-workspace 4))
(bind-keys global-keymap "H-F7" '(activate-workspace 3))
(bind-keys global-keymap "H-F6" '(activate-workspace 2))
(bind-keys global-keymap "H-F5" '(activate-workspace 1))
;; Change viewport
(bind-keys global-keymap "H-F4" '(activate-viewport 2 2))
(bind-keys global-keymap "H-F3" '(activate-viewport 1 2))
(bind-keys global-keymap "H-F2" '(activate-viewport 2 1))
(bind-keys global-keymap "H-F1" '(activate-viewport 1 1))
;; Run services with the X selection
(bind-keys global-keymap "C-H-Space" 'services)
