src/clfswm-configuration.lisp (create-configuration-menu): Change the config system...
[clfswm.git] / src / config.lisp
blobb65b33cea3a2cde82bc4ceccae5ccefb4b015947
1 ;;; --------------------------------------------------------------------------
2 ;;; CLFSWM - FullScreen Window Manager
3 ;;;
4 ;;; --------------------------------------------------------------------------
5 ;;; Documentation: Configuration file
6 ;;;
7 ;;; Change this file to your own needs or update some of this variables in
8 ;;; your ~/.clfswmrc
9 ;;; Some simple hack can be done in the code begining with the word CONFIG
10 ;;; (you can do a 'grep CONFIG *.lisp' to see what you can configure)
11 ;;; --------------------------------------------------------------------------
12 ;;;
13 ;;; (C) 2010 Philippe Brochard <hocwp@free.fr>
14 ;;;
15 ;;; This program is free software; you can redistribute it and/or modify
16 ;;; it under the terms of the GNU General Public License as published by
17 ;;; the Free Software Foundation; either version 3 of the License, or
18 ;;; (at your option) any later version.
19 ;;;
20 ;;; This program is distributed in the hope that it will be useful,
21 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
22 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 ;;; GNU General Public License for more details.
24 ;;;
25 ;;; You should have received a copy of the GNU General Public License
26 ;;; along with this program; if not, write to the Free Software
27 ;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28 ;;;
29 ;;; --------------------------------------------------------------------------
31 (in-package :clfswm)
34 ;;; CONFIG - Default modifiers
35 (defconfig *default-modifiers* '() nil
36 "Default modifiers list to append to explicit modifiers
37 Example: :mod-2 for num_lock, :lock for Caps_lock...")
42 ;;; CONFIG - Never managed window list
43 (defconfig *never-managed-window-list*
44 (list (list (equal-wm-class-fun "ROX-Pinboard") nil)
45 (list (equal-wm-class-fun "xvkbd") 'raise-window)
46 (list 'equal-clfswm-terminal-id 'raise-and-focus-window))
47 nil "CLFSWM will never manage windows of this type.
48 A list of (list match-function handle-function)")
52 (defconfig *hide-unmanaged-window* t nil
53 "Hide or not unmanaged windows when a child is deselected.")
55 ;;; CONFIG - Screen size
56 (defun get-fullscreen-size ()
57 "Return the size of root child (values rx ry rw rh)
58 You can tweak this to what you want"
59 (values -2 -2 (+ (xlib:screen-width *screen*) 2) (+ (xlib:screen-height *screen*) 2)))
60 ;;(values -1 -1 (xlib:screen-width *screen*) (xlib:screen-height *screen*)))
61 ;; (values -1 -1 1024 768))
62 ;; (values 100 100 800 600))
65 (defconfig *corner-size* 3 'Corner
66 "The size of the corner square")
69 ;;; CONFIG: Corner actions - See in clfswm-corner.lisp for
70 ;;; allowed functions
71 (defconfig *corner-main-mode-left-button*
72 '((:top-left open-menu)
73 (:top-right present-virtual-keyboard)
74 (:bottom-right expose-windows-mode)
75 (:bottom-left nil))
76 'Corner "Actions on corners in the main mode with the left mouse button")
78 (defconfig *corner-main-mode-middle-button*
79 '((:top-left help-on-clfswm)
80 (:top-right ask-close/kill-current-window)
81 (:bottom-right nil)
82 (:bottom-left nil))
83 'Corner "Actions on corners in the main mode with the middle mouse button")
85 (defconfig *corner-main-mode-right-button*
86 '((:top-left present-clfswm-terminal)
87 (:top-right ask-close/kill-current-window)
88 (:bottom-right expose-all-windows-mode)
89 (:bottom-left nil))
90 'Corner "Actions on corners in the main mode with the right mouse button")
92 (defconfig *corner-second-mode-left-button*
93 '((:top-left nil)
94 (:top-right nil)
95 (:bottom-right expose-windows-mode)
96 (:bottom-left nil))
97 'Corner "Actions on corners in the second mode with the left mouse button")
99 (defconfig *corner-second-mode-middle-button*
100 '((:top-left help-on-clfswm)
101 (:top-right nil)
102 (:bottom-right nil)
103 (:bottom-left nil))
104 'Corner "Actions on corners in the second mode with the middle mouse button")
106 (defconfig *corner-second-mode-right-button*
107 '((:top-left nil)
108 (:top-right nil)
109 (:bottom-right expose-all-windows-mode)
110 (:bottom-left nil))
111 'Corner "Actions on corners in the second mode with the right mouse button")
114 (defconfig *virtual-keyboard-cmd* "xvkbd"
115 'Corner "The command to display the virtual keybaord
116 Here is an ~/.Xresources example for xvkbd:
117 xvkbd.windowGeometry: 300x100-0-0
118 xvkbd*Font: 6x12
119 xvkbd.modalKeytop: true
120 xvkbd.customization: -french
121 xvkbd.keypad: false
122 And make it always on top")
124 (defconfig *clfswm-terminal-name* "clfswm-terminal"
125 'Corner "The clfswm terminal name")
126 ;;(defparameter *clfswm-terminal-cmd* (format nil "xterm -T ~A -e /bin/bash --noprofile --norc" *clfswm-terminal-name*)
127 ;;(defparameter *clfswm-terminal-cmd* (format nil "urxvt -name ~A" *clfswm-terminal-name*)
128 (defconfig *clfswm-terminal-cmd* (format nil "xterm -T ~A" *clfswm-terminal-name*)
129 'Corner "The clfswm terminal command.
130 This command must set the window title to *clfswm-terminal-name*")
135 ;;; Hook definitions
137 ;;; A hook is a function, a symbol or a list of functions with a rest
138 ;;; arguments.
140 ;;; This hooks are set in clfswm.lisp, you can overwrite them or extend
141 ;;; them with a hook list.
143 ;;; See clfswm.lisp for hooks examples.
145 (defconfig *init-hook* '(default-init-hook display-hello-window)
146 'Hook "Init hook. This hook is run just after the first root frame is created")
148 (defconfig *close-hook* '(close-notify-window close-clfswm-terminal close-virtual-keyboard)
149 'Hook "Close hook. This hook is run just before closing the display")
151 (defconfig *default-nw-hook* 'default-frame-nw-hook
152 'Hook "Default action to do on newly created windows")
157 ;;; CONFIG
158 (defconfig *create-frame-on-root* nil
159 nil "Create frame on root.
160 Set this variable to true if you want to allow to create a new frame
161 on the root window in the main mode with the mouse")
164 ;;; CONFIG: Main mode colors
165 (defconfig *color-selected* "Red"
166 'Main-mode "Color of selected window")
167 (defconfig *color-unselected* "Blue"
168 'Main-mode "Color of unselected color")
169 (defconfig *color-maybe-selected* "Yellow"
170 'Main-mode "Color of maybe selected windows")
173 ;;; CONFIG: Frame colors
174 (defconfig *frame-background* "Black"
175 'Frame-colors "Frame background")
176 (defconfig *frame-foreground* "Green"
177 'Frame-colors "Frame foreground")
178 (defconfig *frame-foreground-root* "Red"
179 'Frame-colors "Frame foreground when the frame is the root frame")
180 (defconfig *frame-foreground-hidden* "Darkgreen"
181 'Frame-colors "Frame foreground for hidden windows")
183 ;;; CONFIG: Default window size
184 (defconfig *default-window-width* 400
185 nil "Default window width")
186 (defconfig *default-window-height* 300
187 nil "Default window height")
189 ;;; CONFIG: Second mode colors and fonts
190 (defconfig *sm-border-color* "Green"
191 'Second-mode "Second mode window border color")
192 (defconfig *sm-background-color* "Black"
193 'Second-mode "Second mode window background color")
194 (defconfig *sm-foreground-color* "Red"
195 'Second-mode "Second mode window foreground color")
196 (defconfig *sm-font-string* *default-font-string*
197 'Second-mode "Second mode window font string")
198 (defconfig *sm-width* 300
199 'Second-mode "Second mode window width")
200 (defconfig *sm-height* 25
201 'Second-mode "Second mode window height")
207 ;;; CONFIG - Identify key colors
208 (defconfig *identify-font-string* *default-font-string*
209 'Identify-key "Identify window font string")
210 (defconfig *identify-background* "black"
211 'Identify-key "Identify window background color")
212 (defconfig *identify-foreground* "green"
213 'Identify-key "Identify window foreground color")
214 (defconfig *identify-border* "red"
215 'Identify-key "Identify window border color")
217 ;;; CONFIG - Query string colors
218 (defconfig *query-font-string* *default-font-string*
219 'Query-string "Query string window font string")
220 (defconfig *query-background* "black"
221 'Query-string "Query string window background color")
222 (defconfig *query-message-color* "yellow"
223 'Query-string "Query string window message color")
224 (defconfig *query-foreground* "green"
225 'Query-string "Query string window foreground color")
226 (defconfig *query-cursor-color* "white"
227 'Query-string "Query string window foreground cursor color")
228 (defconfig *query-parent-color* "blue"
229 'Query-string "Query string window parenthesis color")
230 (defconfig *query-parent-error-color* "red"
231 'Query-string "Query string window parenthesis color when no match")
232 (defconfig *query-border* "red"
233 'Query-string "Query string window border color")
236 ;;; CONFIG - Info mode
237 (defconfig *info-background* "black"
238 'Info-mode "Info window background color")
239 (defconfig *info-foreground* "green"
240 'Info-mode "Info window foreground color")
241 (defconfig *info-border* "red"
242 'Info-mode "Info window border color")
243 (defconfig *info-line-cursor* "white"
244 'Info-mode "Info window line cursor color color")
245 (defconfig *info-selected-background* "blue"
246 'Info-mode "Info selected item background color")
247 (defconfig *info-font-string* *default-font-string*
248 'Info-mode "Info window font string")
250 (defconfig *info-click-to-select* t
251 'Info-mode "If true, click on info window select item. Otherwise, click to drag the menu")
253 ;;; CONFIG - Circulate string colors
254 (defconfig *circulate-font-string* *default-font-string*
255 'Circulate-mode "Circulate string window font string")
256 (defconfig *circulate-background* "black"
257 'Circulate-mode "Circulate string window background color")
258 (defconfig *circulate-foreground* "green"
259 'Circulate-mode "Circulate string window foreground color")
260 (defconfig *circulate-border* "red"
261 'Circulate-mode "Circulate string window border color")
262 (defconfig *circulate-width* 400
263 'Circulate-mode "Circulate mode window width")
264 (defconfig *circulate-height* 15
265 'Circulate-mode "Circulate mode window height")
268 (defconfig *circulate-text-limite* 30
269 'Circulate-mode "Maximum text limite in the circulate window")
272 ;;; CONFIG - Expose string colors
273 (defconfig *expose-font-string* *default-font-string*
274 'Expose-mode "Expose string window font string")
275 (defconfig *expose-background* "black"
276 'Expose-mode "Expose string window background color")
277 (defconfig *expose-foreground* "green"
278 'Expose-mode "Expose string window foreground color")
279 (defconfig *expose-border* "red"
280 'Expose-mode "Expose string window border color")
281 (defconfig *expose-valid-on-key* t
282 'Expose-mode "Valid expose mode when an accel key is pressed")
283 (defconfig *expose-show-window-title* t
284 'Expose-mode "Show the window title on accel window")
288 ;;; CONFIG - Show key binding colors
289 (defconfig *info-color-title* "Magenta"
290 'Info-mode "Colored info title color")
291 (defconfig *info-color-underline* "Yellow"
292 'Info-mode "Colored info underline color")
293 (defconfig *info-color-first* "Cyan"
294 'Info-mode "Colored info first color")
295 (defconfig *info-color-second* "lightblue"
296 'Info-mode "Colored info second color")
299 ;;; CONFIG - Menu colors
300 ;;; Set *info-foreground* to change the default menu foreground
301 (defconfig *menu-color-submenu* "Cyan"
302 'Menu "Submenu color in menu")
303 (defconfig *menu-color-comment* "Yellow"
304 'Menu "Comment color in menu")
305 (defconfig *menu-color-key* "Magenta"
306 'Menu "Key color in menu")
307 (defconfig *menu-color-menu-key* (->color #xFF9AFF)
308 'Menu "Menu key color in menu")
311 ;;; CONFIG - Notify window string colors
312 (defconfig *notify-window-font-string* *default-font-string*
313 'Notify-Window "Notify window font string")
314 (defconfig *notify-window-background* "black"
315 'Notify-Window "Notify Window background color")
316 (defconfig *notify-window-foreground* "green"
317 'Notify-Window "Notify Window foreground color")
318 (defconfig *notify-window-border* "red"
319 'Notify-Window "Notify Window border color")
320 (defconfig *notify-window-delay* 10
321 'Notify-Window "Notify Window display delay")