;; -*- lisp -*-

;; OPTIONS
;; =======

;; This file lists all of sawfish's low-level configuration options.
;; Some of them can be set from the configurator GUI, the rest not.
;; For most options it also shows their default value, or how that
;; value is initially computed.

;; It is recommended to try first the configurator, which can be invoked
;; by middle-clicking the root window (= background).

;; To use this file, either copy it to ~/.sawfish/rc and uncomment and
;; change the lines containing the options you want to modify, or just
;; use it as a reference when editing your own .sawfish/rc

;; Note that some of the pages of options start with a commented out
;; "require" statement. If you change any of those options you'll also
;; need to uncomment that require statement, to ensure that the module
;; implementing the options gets loaded.

;; Please send any comments to the sawfish mailing list:
;; <sawfish-list@gnome.org>

;; Good luck!

;; window animation options

;;  (defvar-setq default-window-animator 'none
;;    "The default window animation mode. Options include none,
;;wireframe, solid, cross, elliptical and draft.")

;;  (defvar-setq anim-outline-icon-coords
;;    (cons (screen-width) (screen-height))
;;    "A cons cell giving the coordinates of where the minimization animations
;;should appear to minimize the window to.")

;;  (defvar-setq anim-outline-steps 16)
;;  (defvar-setq anim-outline-delay 20)

;; customization options

;;   From sawfish-1.5.0, sawfish-config does use a treeview by default.
;;   If you prefer the previous notebook-style instead use:
;;   "sawfish-config --flatten"
;;  (defvar-setq customize-program "sawfish-config"
;;    "Command name of the configurator GUI.")

;;  (defvar-setq customize-group-opt "--group")

;;  (defvar-setq customize-redirect ">/dev/null 2>&1 </dev/null"
;;    "Redirect the configurator's input & output.")

;;  (defvar-setq customize-show-symbols nil
;;    "Show variable names of each customization option.")

;;  (defvar-setq customize-command-classes '(default)
;;    "In configurator \"binding\" section, show commands of these
;;  classes. Possible keys are default, advanced, viewport, and deprecated.")

;; focus options

;;  (defvar-setq focus-mode 'click
;;     "When does the mouse pointer affect the input focus. Standard
;;modes are click, enter-exit, enter-click, and enter-only.")

;;  (defvar-setq focus-click-through t
;;    "Click-to-focus mode passes the click through to the application.")

;;  (defvar-setq focus-dont-push nil
;;    "When true, focusing a window doesn't change it's position in the
;;stack of most-recently focused windows.")

;;  (defvar-setq focus-windows-when-mapped t
;;    "Focus application windows when they first appear.")

;; window frame (theme) options

;;  (defvar-setq default-frame-style nil
;;    "Default frame style")

;;  (defvar-setq reload-themes-when-changed t
;;    "Automatically reload themes when they are updated.")

;;  (defvar-setq frame-type-fallback-alist
;;    '((transient . default)
;;      (shaped . default)
;;      (shaped-transient . shaped)
;;      (shaded . shaped)
;;      (shaded-transient . shaped-transient)
;;      (icon . shaped-transient)
;;      (dock . unframed)
;;      (utility . default)
;;      (shaded-utility . shaded-transient)
;;      (toolbar . unframed)
;;      (menu . unframed)
;;      (splash . unframed))
;;    "Frame type fallbacks. This is an alist whose elements are
;;   (required-type . fallback-type). When REQUIRED-TYPE is not supported
;;   by the current theme, then FALLBACK-TYPE is used instead.")

;;  (defvar-setq decorate-transients nil
;;    "Decorate dialog windows similarly to application windows.")

;;  (defvar-setq theme-update-interval 60
;;    "Number of seconds between checking if theme files have been modified.")

;;  (defvar-setq user-theme-directory "~/.sawfish/themes"
;;    "Directory containing user-local themes.")

;;  (defvar-setq system-theme-directory
;;    (expand-file-name "../themes" sawfish-lisp-lib-directory)
;;    "Directory containing themes from the current sawfish version.")

;;  (defvar-setq site-theme-directory
;;    (expand-file-name "../../themes" sawfish-lisp-lib-directory)
;;    "Directory containing system-wide themes.")

;;  (defvar-setq theme-load-path
;;    (list user-theme-directory site-theme-directory system-theme-directory)
;;    "List of directories search for themes.")

;;  (defvar-setq themes-are-gaolled t
;;    "When non-nil themes are assumed to be malicious.")

;;  (defvar-setq default-font nil
;;    "Default font.")

;;  (defvar-setq default-bevel-percent nil
;;    "Bevel intensity as a percentage.")

;;  (defvar-setq use-custom-font-color '()
;;    "Use custom font colors for frames")

;;  (defvar-setq frame-font-active-color "black"
;;    "Font color for active frames")

;;  (defvar-setq frame-font-inactive-color "black"
;;    "Font color for inactive frames")

;; menu options

;;  (defvar-setq menus-include-shortcuts nil
;;    "Display key-binding information in menu items.")

;;  (defvar-setq menu-program
;;    (expand-file-name "sawfish-menu" sawfish-exec-directory)
;;    "Location of the program implementing sawfish's menu interface.")

;;  (defvar-setq menu-program-stays-running t
;;    "When non-nil, the menu program is never stopped. If a number,
;;then this is taken as the number of seconds to let the process hang
;;around unused before killing it.")

;;  (defvar-setq window-ops-menu)
;;  (defvar-setq window-ops-toggle-menu)
;;  (defvar-setq window-menu)
;;  (defvar-setq root-menu)

;;  Probably you want to set `user-apps-menu', instead of `apps-menu'.
;;  (defvar-setq apps-menu)

;;  (defvar-setq custom-menu-includes-all-settings t
;;    "When non-nil, the custom menu includes the `All settings' item.")

;; Applications menu options
;;  (defvar-setq apps-menu-autogen t
;;   "If non-nil, `apps-menu' is automatically generated from `user-apps-menu'
;; and *.desktop files. If you set `apps-menu', then it won't happen anyway.")

;;  (defvar-setq user-apps-menu '()
;;    "Your own applications menu entries. It is followed by auto generated
;:  applications menu.")

;;  (defvar apps-menu-filter 'default
;;    "The filter to use while generating the `apps-menu'. The default filters
;;  include `fdo-toplevel-filter' `fdo-nodisplay-filter' `fdo-hidden-filter'
;;  `fdo-onlyshowin-filter' and `fdo-notshowin-filter'.  Can also be set with
;;  'default or 'some, both of which are combinations of the default filters,
;;  'default uses them all and 'some only uses `fdo-notshowin-filter' and
;;  `fdo-onlyshowin-filter'. This can be set to 'nil or '() to perform no
;;  filtering on the `apps-menu'.")

;; (defvar-setq desktop-directory '("/usr/share/applications")
;;   "List of directories to look for *.desktop files")

;; (defvar-setq apps-menu-lang nil
;;   "Language for applications menu, in string. Default is set from locale.")

;; (defvar-setq apps-menu-alphabetize 't
;;   "Sort the apps menu alphabetically.")

;; (defvar-setq apps-menu-associate-categories t
;;   "Associate desktop entry categories with the category-master-list")

;; (defvar-setq desktop-directory '("/usr/share/applications")
;;   "List of directories to look for *.desktop files."

;; (defvar-setq want-poweroff-menu t
;;   "Add poweroff menu if you don't use GNOME / KDE / XFCE.")

;; window placement options

;;  (defvar-setq place-window-mode 'top-left
;;    "Method of placing windows. Standard modes include: randomly,
;;interactively, centered, centered-on-parent, under-pointer, none,
;;top-left, off-center, first-fit, best-fit, stagger.")

;;  (defvar-setq place-transient-mode 'centered-on-parent
;;    "Method of placing dialog windows")

;;  (defvar-setq ignore-program-positions t
;;    "Ignore program-specified window placements.")

;; viewport options

;;  (defvar-setq viewport-dimensions '(1 . 1)
;;    "The number of columns and rows of viewports of the virtual desktop.
;; If the dynamic viewport is enabled, this variable is meaningless.")

;;  (defvar-setq viewport-minimum-dimensions '(1 . 1)
;;    "Minimum number of columns and rows in virtual desktop (if boundary-mode is dynamic).")

;;  (defvar-setq uniconify-to-current-viewport t
;;    "Windows uniconify to the current viewport.")

;;  (defvar-setq viewport-boundary-mode 'stop
;;    "Decides how to act when you try to go beyond virtual desktop boundary.
;; Stop means stop there. Wrap-around means jump to the other edge.
;; Dynamic grows the virtual desktop.")

;;  (defvar-setq scroll-viewport-steps 1
;;    "When you go to another viewport, the bigger this value,
;;  the more smoothly the screen is scrolled.
;;  It is the number of steps for scrolling. The value 1 means no scroll, and
;;  the change is instantaneous.")

;; workspace options

;;  (defvar-setq workspace-boundary-mode 'stop
;;    "How to act when passing the first or last workspace, one of
;;`stop', `wrap-around' or `keep-going'")

;;  (defvar-setq workspace-send-boundary-mode 'stop
;;    "How to act when passing the first or last workspace, while
;;moving a window, one of `stop', `keep-going', `wrap-around'")

;;  (defvar-setq workspace-names '()
;;    "List of all workspace names. Defines the initial number of workspaces.")

;;  (defvar-setq lock-first-workspace t
;;    "Preserve outermost empty workspaces in the pager.")

;;  (defvar-setq static-workspace-menus)

;; grow/pack options

;;  (defvar-setq grow-is-maximize t
;;    "Whether growing is considered to be maximization.  When you turn
;;this on, you can use `unmaximize-window' or something similar to get
;;back to the original size.")

;;  (defvar-setq pack-warp-pointer 'maybe
;;    "Whether and how to move the pointer when packing windows.
;;`maybe' means that the pointer is moved along with the window, if the
;;pointer was within the window area before packing. `always' warps the
;;pointer to the center of the window if it isn't already in the
;;window, then does like `maybe'.  `never' means not to warp the
;;pointer.")

;;  (defvar-setq grow-pack-bump-obscured nil
;;    "Whether to bump into fully obscured windows when growing or
;;packing windows.")

;;  (defvar-setq grow-pack-bump-other-depth 'always
;;    "Whether to bump into windows on a different depth when growing
;;or packing windows. `maybe' means only avoided windows in other
;;depths.")

;;  (defvar-setq grow-pack-bump-ignored t
;;    "Whether to bump into ignored windows when growing or packing.")

;; window cycling options

;;  (defvar-setq cycle-show-window-names t
;;    "Display window names and icons while cycling through windows.")

;;  (defvar-setq cycle-include-iconified t
;;    "Include iconified windows when cycling.")

;;  (defvar-setq cycle-all-workspaces nil
;;    "Include windows on all workspaces when cycling.")

;;  (defvar-setq cycle-all-viewports nil
;;    "Include windows on all viewports when cycling.")

;;  (defvar-setq cycle-raise-windows t
;;    "Raise windows while they're temporarily selected during cycling.")

;; move/resize options

;;  (defvar-setq move-outline-mode 'opaque
;;    "How windows being moved are animated, either opaque, box, cross, elliptical or draft")

;;  (defvar-setq resize-outline-mode 'opaque
;;    "How windows being resized are animated, either opaque, box, cross, elliptical or draft")

;;  (defvar-setq move-resize-raise-window nil
;;    "Raise windows when they are moved or resized.")

;;  (defvar-setq move-show-position nil
;;    "Show current position of windows while moving.")

;;  (defvar-setq resize-show-dimensions t
;;    "Show current dimensions of windows while resizing.")

;;  (defvar-setq resize-edge-mode 'border-grab
;;    "How to choose window edges when resizing. One of `region',
;;`border', `grab', `border-grab'")

;;  (defvar-setq move-snap-epsilon 12
;;    "Distance in pixels before window edges align with each other.")

;;  (defvar-setq move-snap-mode 'resistance
;;    "How to snap together window edges, one of `magnetism',
;;`resistance', or `attraction'.")

;;  (defvar-setq move-snap-ignored-windows nil
;;    "Snap to otherwise-ignored windows.")

;;  (defvar-setq move-resize-inhibit-configure nil
;;    "Only update window contents after it has stopped moving.")

;;  (defvar-setq move-cursor-shape 'hand2)
;;  (defvar-setq resize-cursor-shape 'crosshair)

;; audio options

;;  (defvar-setq audio-events-enabled nil
;;    "Play sound effects for window events.")

;;  (defvar-setq audio-for-ignored-windows nil
;;    "Play sound effects for unmanaged windows.")

;;  (defvar-setq audio-events-alist)

;;  (defvar-setq audio-load-path
;;    (list "~/.sawfish/sounds"
;;	  (or (getenv "SAWFISHSOUNDSDIR")
;;	      (expand-file-name "../sounds" sawfish-lisp-lib-directory))
;;	  (or (getenv "SAWFISHSITESOUNDSDIR")
;;	      (expand-file-name "../../sounds" sawfish-lisp-lib-directory))
;;	  ".")
;;    "List of directories to search for sound samples.")

;;  (defvar-setq play-sample-program "/usr/bin/paplay"
;;    "The program used to play audio samples. Should be capable of
;; playing *.wav file.
;;   You can't set any arguments to pass from this variable. If you want
;; to give arguments or redirect output, write a wrapper program.")

;; error handling options

;;  (require 'sawfish.wm.ext.error-handler)

;;  (defvar-setq error-handler-beep t
;;    "Beep when errors occur.")

;;  (defvar-setq error-destination 'standard-error
;;    "Where to display error messages; one of nowhere, screen,
;;standard-error or both. By default, an error during the
;;initialization, i.e., `~/.sawfish/rc' is printed to both.")

;; tooltips options

;;  (require 'sawfish.wm.ext.tooltips)

;;  (defvar-setq tooltips-enabled nil
;;    "Display tooltips for window frames.")

;;  (defvar-setq tooltips-show-doc-strings nil
;;    "Show full documentation in tooltips.")

;;  (defvar-setq tooltips-delay 500
;;    "Number of milliseconds before displaying tooltips.")

;;  (defvar-setq tooltips-timeout-delay 5000
;;    "Number of milliseconds before removing tooltips.")

;;  (defvar-setq tooltips-font nil
;;    "Font used to display tooltips, or nil for default.")

;;  (defvar-setq tooltips-background-color "grey85"
;;    "Color used for the tooltips background")

;;  (defvar-setq tooltips-foreground-color "black"
;;    "Color used for the tooltips foreground")

;; window history options

;;  (require 'sawfish.wm.ext.window-history)

;;  (defvar-setq window-history-file "~/.sawfish/window-history"
;;    "Name of the file used to store persistent window state.")

;;  (defvar-setq window-history-states
;;    '(sticky ignored never-focus type maximized frame-style
;;      cycle-skip window-list-skip)
;;    "List of states in window-state-change-hook that should be tracked.")
;;
;;  (defvar-setq window-history-key-property 'WM_CLASS
;;    "Window property matched on.")

;;  (defvar-setq window-history-menu)

;;  (defvar-setq window-history-auto-save-position t
;;    "Automatically remember window positions.")

;;  (defvar-setq window-history-auto-save-dimensions nil
;;    "Automatically remember window sizes.")

;;  (defvar-setq window-history-auto-save-state nil
;;    "Automatically remember other window attributes.")

;;  (defvar-setq window-history-ignore-transients t
;;    "Don't automatically remember details of transient windows.")

;; auto raise options

;;  (require 'sawfish.wm.ext.auto-raise)

;;  (defvar-setq raise-windows-on-focus nil
;;    "Raise windows when they are focused.")

;;  (defvar-setq raise-window-timeout 500
;;    "Delay in milliseconds until focused windows are raised.")

;; shade-hover options

;;  (require 'sawfish.wm.ext.shade-hover)

;;  (defvar-setq shade-hover-mode nil
;;    "Enable shade-hover mode.")

;;  (defvar-setq shade-hover-delay 250
;;    "Delay in milliseconds before unshading windows.")

;;  (defvar-setq shade-hover-raise nil
;;    "Raise windows when they are unshaded.")

;; smart placement modes

;;  (defvar-setq sp-avoided-windows-weight 100)
;;  (defvar-setq sp-normal-windows-weight 1)

;;  (defvar-setq sp-padding 0
;;    "Try to leave at least this many pixels between window edges in
;;first/best-fit.")

;;  (defvar-setq sp-max-points 10
;;    "The maximum number of points to keep in each grid dimension.")

;;  (defvar-setq sp-max-queued-events 256
;;    "Only when there's fewer X events than this pending do we try to
;;do smart placement.")

;; configure-request handler

;;  (defvar-setq configure-auto-gravity t
;;    "Automatically select window gravity from position on screen.")

;;  (defvar-setq configure-ignore-stacking-requests nil
;;    "Ignore requests from applications to change window stacking.")

;; iconify options

;;  (defvar-setq focus-windows-on-uniconify nil
;;    "Windows are focused after being minimized.")

;;  (defvar-setq raise-windows-on-uniconify t
;;    "Windows are raised after being unminimized.")

;;  (defvar-setq uniconify-to-current-workspace t
;;    "Move windows to the current workspace when they are unminimized.")

;;  (defvar-setq iconify-ignored nil
;;    "Unmanaged windows may be iconified.")

;;  (defvar-setq iconify-group-mode 'transients
;;    "When minimizing a window also remove these. One of none,
;;transients, or group")

;;  (defvar-setq uniconify-group-mode 'transients
;;    "When unminimizing a window also restore these. One of none,
;;transients, or group.")

;;  (defvar-setq raise-windows-when-unshaded nil
;;    "Raise windows when they are unshaded.")

;;  (defvar-setq unshade-selected-windows nil
;;    "Unshade window when selected.")

;; maximize options

;;  (defvar-setq maximize-always-expands nil
;;    "Maximizing a window in one dimension must increase the size of
;;that dimension.")

;;  (defvar-setq maximize-raises t
;;    "Raise windows when they are maximized.")

;;  (defvar-setq maximize-ignore-when-filling t
;;    "Let unmanaged windows be overlapped when filling windows.")

;;  (defvar-setq maximize-avoid-avoided t
;;    "Don't cover `avoided' windows when maximizing.")

;;  (defvar-setq move-lock-when-maximized t
;;    "Lock position and size while windows are maximized.")

;; Miscellaneous options

;;  (defvar-setq transients-above 'parents
;;    "Keep transient windows stacked above")

;;  (defvar-setq dont-avoid-ignored t
;;    "Whether to not avoid ignored windows by default."

;;  (defvar-setq avoid-by-default nil
;;    "When non-nil, any unspecified windows are avoided by default.")

;;  (defvar-setq move-cursor-increment 16
;;    "Number of pixels to move pointer in `move-cursor-' commands.")

;;  (defvar-setq size-window-def-increment 16
;;    "Default increment for size-window commands (when the window
;;doesn't specify it's own increments).")

;;  (defvar-setq slide-window-increment 16
;;    "Number of pixels to move window in `slide-' commands.")

;;  (defvar-setq warp-to-window-offset (cons -1 -1)
;;    "Offset (percent) from window edges when warping pointer. A negative
;;number means outside the left window edge.")

;;  (defvar-setq warp-to-window-enabled nil
;;    "When false, disable warping the cursor to windows.")

;;  (defvar-setq uniquify-name-format "%s [%d]"
;;    "Format to create unique window names.")

;;  (defvar-setq dock-window-properties
;;    '(window-list-skip cycle-skip fixed-position focus-click-through
;;      avoid no-history never-iconify never-maximize sticky
;;      stick-viewport placed)
;;    "List of properties set (to true) on windows when they are marked as docks.")

;; (defvar-setq desktop-window-properties
;;   '(fixed-position sticky sticky-viewport)
;;   "List of properties set (to true) on windows when they are marked as desktops.")

;; (defvar-setq desktop-window-depth -4
;;   "The stacking depth of desktop windows.")

;; (defvar-setq dock-window-depth 0
;;   "The stacking depth of dock windows.")

;;  (defvar-setq select-window-cursor-shape 'crosshair
;;    "Cursor used by select-window function.")

;;  (defvar-setq pointer-motion-threshold 2
;;    "Distance in pixels pointer must move before generating motion events.")

;;  (defvar-setq wm-modifier-value (wm-modifier)
;;    "Modifier key(s) used for default window manager shortcuts.")

;;  (defvar-setq transients-are-group-members t
;;    "Group transient windows with their parents.")

;;  (defvar-setq persistent-group-ids '()
;;    "List of symbols naming window groups that always exist.")

;;  (defvar-setq xterm-program "xterm"
;;    "The program launched by the `xterm' command.")

;;  (defvar-setq browser-program "www-browser"
;;    "The program launched by the `browser' command.")

;; prompt options

;;  (defvar-setq prompt-max-display 20
;;    "Maximum number of completions to display under the input string.")

;;  (defvar-setq prompt-word-regexp "[0-9a-z_]"
;;    "Regexp that determines which characters are to be considered
;;part of a word when moving.")

;;  (defvar-setq prompt-file-exclude
;;    "\\.(o|jlc|x)$|~$|^#.*#$|^\\.\\.?$"
;;    "A regexp, if it matches the file being considered for
;;completion, the file is rejected.")

;;  (defvar-setq prompt-list-fold-case nil
;;    "Whether prompt-from-list should ignore case.")

;;  (defvar-setq prompt-window-position
;;    (cons (- (quotient (screen-width) 2) 200) -200)
;;    "A cons cell defining the screen position at which the `prompt'
;;window is displayed. See the `display-message' function for more
;;details.")

;;  (defvar-setq prompt-font default-font
;;    "Font for prompt: \\w")

;;  (defvar-setq prompt-color (cons (get-color "black") (get-color "white"))
;;    "Prompt message's colors.")

;; shrink-yank options (in grow-pack.jl)

;; (defvar-setq shrink-window-minimum-size 10
;;   "The minimum height or width to which a window may be shrunk.")

;; (defvar-setq yank-window-minimum-visible 10
;;   "The minimum amount of window left visible, if yanked over the edge.")

;; poweroff options

;; (defvar-setq reboot-command "sudo shutdown -r now"
;;   "The command used to reboot the computer.")

;; (defvar-setq halt-command "sudo shutdown -h now"
;;   "The command used to halt the computer.")

;; (defvar-setq suspend-command "sudo suspend"
;;   "The command used to suspend the computer.")

;; (defvar-setq hibernate-command "sudo hibernate"
;;   "The command used to hibernate the computer.")

;; EdgeAction options

;;  (defvar-setq edge-actions-enabled nil
;;   "Activate edges to perform various actions.")

;; (defvar-setq left-right-edge-action 'none/hot-spot
;;   "Action for the left and right screen-edge.")

;; (defvar-setq left-right-edge-move-action 'none
;;   "Action for the left and right screen-edge while moving a window.")

;; (defvar-setq top-bottom-edge-action 'none/hot-spot
;;   "Action for the top and bottom screen-edge.")

;; (defvar-setq top-bottom-edge-move-action 'none
;;   "Action for the top and bottom screen-edge while moving a window.")

;; (defvar-setq edge-flip-delay 250
;;   "Delay (in milliseconds) of flipping of viewport / workspace.")

;; (defvar-setq hot-spot-delay 250
;;   "Delay (in milliseconds) before activating a hot-spot.")

;; (defvar-setq hot-spots-corner-length 50
;;   "The size portion of the screen-border recognized as \"corners\",
;;   in pixels. Applies to both x and y direction."

;; (defvar-setq viewport-drag-distance 64
;;   "Amount to drag the viewport (in pixel) each time the pointer hits the
;;   screen edge.")

;; (defvar-setq viewport-drag-cursor-distance 32
;;   "Amount to pull back the cursor (in pixel) after dragging the viewport.")
