1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 
3 /* Mutter preferences */
4 
5 /*
6  * Copyright (C) 2001 Havoc Pennington
7  * Copyright (C) 2006 Elijah Newren
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License as
11  * published by the Free Software Foundation; either version 2 of the
12  * License, or (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 #ifndef META_PREFS_H
24 #define META_PREFS_H
25 
26 /* This header is a "common" one between the UI and core side */
27 #include <meta/common.h>
28 #include <meta/types.h>
29 #include <pango/pango-font.h>
30 #include <gdesktop-enums.h>
31 #include <gio/gio.h>
32 
33 /**
34  * MetaPreference:
35  * @META_PREF_MOUSE_BUTTON_MODS: mouse button modifiers
36  * @META_PREF_FOCUS_MODE: focus mode
37  * @META_PREF_FOCUS_NEW_WINDOWS: focus new windows
38  * @META_PREF_ATTACH_MODAL_DIALOGS: attach modal dialogs
39  * @META_PREF_RAISE_ON_CLICK: raise on click
40  * @META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR: action double click titlebar
41  * @META_PREF_ACTION_MIDDLE_CLICK_TITLEBAR: action middle click titlebar
42  * @META_PREF_ACTION_RIGHT_CLICK_TITLEBAR: action right click titlebar
43  * @META_PREF_AUTO_RAISE: auto-raise
44  * @META_PREF_AUTO_RAISE_DELAY: auto-raise delay
45  * @META_PREF_FOCUS_CHANGE_ON_POINTER_REST: focus change on pointer rest
46  * @META_PREF_TITLEBAR_FONT: title-bar font
47  * @META_PREF_NUM_WORKSPACES: number of workspaces
48  * @META_PREF_DYNAMIC_WORKSPACES: dynamic workspaces
49  * @META_PREF_KEYBINDINGS: keybindings
50  * @META_PREF_DISABLE_WORKAROUNDS: disable workarounds
51  * @META_PREF_BUTTON_LAYOUT: button layout
52  * @META_PREF_WORKSPACE_NAMES: workspace names
53  * @META_PREF_VISUAL_BELL: visual bell
54  * @META_PREF_AUDIBLE_BELL: audible bell
55  * @META_PREF_VISUAL_BELL_TYPE: visual bell type
56  * @META_PREF_GNOME_ACCESSIBILITY: GNOME accessibility
57  * @META_PREF_GNOME_ANIMATIONS: GNOME animations
58  * @META_PREF_CURSOR_THEME: cursor theme
59  * @META_PREF_CURSOR_SIZE: cursor size
60  * @META_PREF_RESIZE_WITH_RIGHT_BUTTON: resize with right button
61  * @META_PREF_EDGE_TILING: edge tiling
62  * @META_PREF_FORCE_FULLSCREEN: force fullscreen
63  * @META_PREF_WORKSPACES_ONLY_ON_PRIMARY: workspaces only on primary
64  * @META_PREF_DRAGGABLE_BORDER_WIDTH: draggable border width
65  * @META_PREF_AUTO_MAXIMIZE: auto-maximize
66  * @META_PREF_CENTER_NEW_WINDOWS: center new windows
67  * @META_PREF_DRAG_THRESHOLD: drag threshold
68  * @META_PREF_LOCATE_POINTER: show pointer location
69  */
70 
71 /* Keep in sync with GSettings schemas! */
72 typedef enum
73 {
74   META_PREF_MOUSE_BUTTON_MODS,
75   META_PREF_FOCUS_MODE,
76   META_PREF_FOCUS_NEW_WINDOWS,
77   META_PREF_ATTACH_MODAL_DIALOGS,
78   META_PREF_RAISE_ON_CLICK,
79   META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR,
80   META_PREF_ACTION_MIDDLE_CLICK_TITLEBAR,
81   META_PREF_ACTION_RIGHT_CLICK_TITLEBAR,
82   META_PREF_AUTO_RAISE,
83   META_PREF_AUTO_RAISE_DELAY,
84   META_PREF_FOCUS_CHANGE_ON_POINTER_REST,
85   META_PREF_TITLEBAR_FONT,
86   META_PREF_NUM_WORKSPACES,
87   META_PREF_DYNAMIC_WORKSPACES,
88   META_PREF_KEYBINDINGS,
89   META_PREF_DISABLE_WORKAROUNDS,
90   META_PREF_BUTTON_LAYOUT,
91   META_PREF_WORKSPACE_NAMES,
92   META_PREF_VISUAL_BELL,
93   META_PREF_AUDIBLE_BELL,
94   META_PREF_VISUAL_BELL_TYPE,
95   META_PREF_GNOME_ACCESSIBILITY,
96   META_PREF_GNOME_ANIMATIONS,
97   META_PREF_CURSOR_THEME,
98   META_PREF_CURSOR_SIZE,
99   META_PREF_RESIZE_WITH_RIGHT_BUTTON,
100   META_PREF_EDGE_TILING,
101   META_PREF_FORCE_FULLSCREEN,
102   META_PREF_WORKSPACES_ONLY_ON_PRIMARY,
103   META_PREF_DRAGGABLE_BORDER_WIDTH,
104   META_PREF_AUTO_MAXIMIZE,
105   META_PREF_CENTER_NEW_WINDOWS,
106   META_PREF_DRAG_THRESHOLD,
107   META_PREF_LOCATE_POINTER,
108   META_PREF_CHECK_ALIVE_TIMEOUT,
109 } MetaPreference;
110 
111 typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
112                                        gpointer       user_data);
113 
114 META_EXPORT
115 void meta_prefs_add_listener    (MetaPrefsChangedFunc func,
116                                  gpointer             user_data);
117 
118 META_EXPORT
119 void meta_prefs_remove_listener (MetaPrefsChangedFunc func,
120                                  gpointer             user_data);
121 
122 META_EXPORT
123 const char* meta_preference_to_string (MetaPreference pref);
124 
125 META_EXPORT
126 MetaVirtualModifier         meta_prefs_get_mouse_button_mods  (void);
127 
128 META_EXPORT
129 gint                        meta_prefs_get_mouse_button_resize (void);
130 
131 META_EXPORT
132 gint                        meta_prefs_get_mouse_button_menu  (void);
133 
134 META_EXPORT
135 GDesktopFocusMode           meta_prefs_get_focus_mode         (void);
136 
137 META_EXPORT
138 GDesktopFocusNewWindows     meta_prefs_get_focus_new_windows  (void);
139 
140 META_EXPORT
141 gboolean                    meta_prefs_get_attach_modal_dialogs (void);
142 
143 META_EXPORT
144 gboolean                    meta_prefs_get_raise_on_click     (void);
145 
146 /* returns NULL if GTK default should be used */
147 META_EXPORT
148 const PangoFontDescription* meta_prefs_get_titlebar_font      (void);
149 
150 META_EXPORT
151 int                         meta_prefs_get_num_workspaces     (void);
152 
153 META_EXPORT
154 gboolean                    meta_prefs_get_dynamic_workspaces (void);
155 
156 META_EXPORT
157 gboolean                    meta_prefs_get_disable_workarounds (void);
158 
159 META_EXPORT
160 gboolean                    meta_prefs_get_auto_raise         (void);
161 
162 META_EXPORT
163 int                         meta_prefs_get_auto_raise_delay   (void);
164 
165 META_EXPORT
166 gboolean                    meta_prefs_get_focus_change_on_pointer_rest (void);
167 
168 META_EXPORT
169 gboolean                    meta_prefs_get_gnome_accessibility (void);
170 
171 META_EXPORT
172 gboolean                    meta_prefs_get_gnome_animations   (void);
173 
174 META_EXPORT
175 gboolean                    meta_prefs_get_edge_tiling        (void);
176 
177 META_EXPORT
178 gboolean                    meta_prefs_get_auto_maximize      (void);
179 
180 META_EXPORT
181 gboolean                    meta_prefs_get_center_new_windows (void);
182 
183 META_EXPORT
184 gboolean                    meta_prefs_get_show_fallback_app_menu (void);
185 
186 META_EXPORT
187 void                        meta_prefs_set_show_fallback_app_menu (gboolean whether);
188 
189 META_EXPORT
190 void                        meta_prefs_get_button_layout (MetaButtonLayout *button_layout);
191 
192 /* Double, right, middle click can be configured to any titlebar meta-action */
193 META_EXPORT
194 GDesktopTitlebarAction      meta_prefs_get_action_double_click_titlebar (void);
195 
196 META_EXPORT
197 GDesktopTitlebarAction      meta_prefs_get_action_middle_click_titlebar (void);
198 
199 META_EXPORT
200 GDesktopTitlebarAction      meta_prefs_get_action_right_click_titlebar (void);
201 
202 META_EXPORT
203 void meta_prefs_set_num_workspaces (int n_workspaces);
204 
205 META_EXPORT
206 const char* meta_prefs_get_workspace_name    (int         i);
207 
208 META_EXPORT
209 void        meta_prefs_change_workspace_name (int         i,
210                                               const char *name);
211 
212 META_EXPORT
213 const char* meta_prefs_get_cursor_theme      (void);
214 
215 META_EXPORT
216 int         meta_prefs_get_cursor_size       (void);
217 
218 META_EXPORT
219 gboolean    meta_prefs_get_compositing_manager (void);
220 
221 META_EXPORT
222 gboolean    meta_prefs_get_force_fullscreen  (void);
223 
224 META_EXPORT
225 void meta_prefs_set_force_fullscreen (gboolean whether);
226 
227 META_EXPORT
228 gboolean meta_prefs_get_workspaces_only_on_primary (void);
229 
230 META_EXPORT
231 int      meta_prefs_get_draggable_border_width (void);
232 
233 META_EXPORT
234 int      meta_prefs_get_drag_threshold (void);
235 
236 /**
237  * MetaKeyBindingAction:
238  * @META_KEYBINDING_ACTION_NONE: FILLME
239  * @META_KEYBINDING_ACTION_WORKSPACE_1: FILLME
240  * @META_KEYBINDING_ACTION_WORKSPACE_2: FILLME
241  * @META_KEYBINDING_ACTION_WORKSPACE_3: FILLME
242  * @META_KEYBINDING_ACTION_WORKSPACE_4: FILLME
243  * @META_KEYBINDING_ACTION_WORKSPACE_5: FILLME
244  * @META_KEYBINDING_ACTION_WORKSPACE_6: FILLME
245  * @META_KEYBINDING_ACTION_WORKSPACE_7: FILLME
246  * @META_KEYBINDING_ACTION_WORKSPACE_8: FILLME
247  * @META_KEYBINDING_ACTION_WORKSPACE_9: FILLME
248  * @META_KEYBINDING_ACTION_WORKSPACE_10: FILLME
249  * @META_KEYBINDING_ACTION_WORKSPACE_11: FILLME
250  * @META_KEYBINDING_ACTION_WORKSPACE_12: FILLME
251  * @META_KEYBINDING_ACTION_WORKSPACE_LEFT: FILLME
252  * @META_KEYBINDING_ACTION_WORKSPACE_RIGHT: FILLME
253  * @META_KEYBINDING_ACTION_WORKSPACE_UP: FILLME
254  * @META_KEYBINDING_ACTION_WORKSPACE_DOWN: FILLME
255  * @META_KEYBINDING_ACTION_WORKSPACE_LAST: FILLME
256  * @META_KEYBINDING_ACTION_SWITCH_APPLICATIONS: FILLME
257  * @META_KEYBINDING_ACTION_SWITCH_APPLICATIONS_BACKWARD: FILLME
258  * @META_KEYBINDING_ACTION_SWITCH_GROUP: FILLME
259  * @META_KEYBINDING_ACTION_SWITCH_GROUP_BACKWARD: FILLME
260  * @META_KEYBINDING_ACTION_SWITCH_WINDOWS: FILLME
261  * @META_KEYBINDING_ACTION_SWITCH_WINDOWS_BACKWARD: FILLME
262  * @META_KEYBINDING_ACTION_SWITCH_PANELS: FILLME
263  * @META_KEYBINDING_ACTION_SWITCH_PANELS_BACKWARD: FILLME
264  * @META_KEYBINDING_ACTION_CYCLE_GROUP: FILLME
265  * @META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD: FILLME
266  * @META_KEYBINDING_ACTION_CYCLE_WINDOWS: FILLME
267  * @META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD: FILLME
268  * @META_KEYBINDING_ACTION_CYCLE_PANELS: FILLME
269  * @META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD: FILLME
270  * @META_KEYBINDING_ACTION_SHOW_DESKTOP: FILLME
271  * @META_KEYBINDING_ACTION_PANEL_RUN_DIALOG: FILLME
272  * @META_KEYBINDING_ACTION_TOGGLE_RECORDING: FILLME
273  * @META_KEYBINDING_ACTION_SET_SPEW_MARK: FILLME
274  * @META_KEYBINDING_ACTION_ACTIVATE_WINDOW_MENU: FILLME
275  * @META_KEYBINDING_ACTION_TOGGLE_FULLSCREEN: FILLME
276  * @META_KEYBINDING_ACTION_TOGGLE_MAXIMIZED: FILLME
277  * @META_KEYBINDING_ACTION_TOGGLE_TILED_LEFT: FILLME
278  * @META_KEYBINDING_ACTION_TOGGLE_TILED_RIGHT: FILLME
279  * @META_KEYBINDING_ACTION_TOGGLE_ABOVE: FILLME
280  * @META_KEYBINDING_ACTION_MAXIMIZE: FILLME
281  * @META_KEYBINDING_ACTION_UNMAXIMIZE: FILLME
282  * @META_KEYBINDING_ACTION_TOGGLE_SHADED: FILLME
283  * @META_KEYBINDING_ACTION_MINIMIZE: FILLME
284  * @META_KEYBINDING_ACTION_CLOSE: FILLME
285  * @META_KEYBINDING_ACTION_BEGIN_MOVE: FILLME
286  * @META_KEYBINDING_ACTION_BEGIN_RESIZE: FILLME
287  * @META_KEYBINDING_ACTION_TOGGLE_ON_ALL_WORKSPACES: FILLME
288  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_1: FILLME
289  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_2: FILLME
290  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_3: FILLME
291  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_4: FILLME
292  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_5: FILLME
293  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_6: FILLME
294  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_7: FILLME
295  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_8: FILLME
296  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_9: FILLME
297  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_10: FILLME
298  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_11: FILLME
299  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_12: FILLME
300  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LEFT: FILLME
301  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_RIGHT: FILLME
302  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_UP: FILLME
303  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_DOWN: FILLME
304  * @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LAST: FILLME
305  * @META_KEYBINDING_ACTION_MOVE_TO_MONITOR_LEFT: FILLME
306  * @META_KEYBINDING_ACTION_MOVE_TO_MONITOR_RIGHT: FILLME
307  * @META_KEYBINDING_ACTION_MOVE_TO_MONITOR_UP: FILLME
308  * @META_KEYBINDING_ACTION_MOVE_TO_MONITOR_DOWN: FILLME
309  * @META_KEYBINDING_ACTION_RAISE_OR_LOWER: FILLME
310  * @META_KEYBINDING_ACTION_RAISE: FILLME
311  * @META_KEYBINDING_ACTION_LOWER: FILLME
312  * @META_KEYBINDING_ACTION_MAXIMIZE_VERTICALLY: FILLME
313  * @META_KEYBINDING_ACTION_MAXIMIZE_HORIZONTALLY: FILLME
314  * @META_KEYBINDING_ACTION_MOVE_TO_CORNER_NW: FILLME
315  * @META_KEYBINDING_ACTION_MOVE_TO_CORNER_NE: FILLME
316  * @META_KEYBINDING_ACTION_MOVE_TO_CORNER_SW: FILLME
317  * @META_KEYBINDING_ACTION_MOVE_TO_CORNER_SE: FILLME
318  * @META_KEYBINDING_ACTION_MOVE_TO_SIDE_N: FILLME
319  * @META_KEYBINDING_ACTION_MOVE_TO_SIDE_S: FILLME
320  * @META_KEYBINDING_ACTION_MOVE_TO_SIDE_E: FILLME
321  * @META_KEYBINDING_ACTION_MOVE_TO_SIDE_W: FILLME
322  * @META_KEYBINDING_ACTION_MOVE_TO_CENTER: FILLME
323  * @META_KEYBINDING_ACTION_OVERLAY_KEY: FILLME
324  * @META_KEYBINDING_ACTION_LOCATE_POINTER_KEY: FILLME
325  * @META_KEYBINDING_ACTION_ALWAYS_ON_TOP: FILLME
326  * @META_KEYBINDING_ACTION_LAST: FILLME
327  */
328 /* XXX FIXME This should be x-macroed, but isn't yet because it would be
329  * difficult (or perhaps impossible) to add the suffixes using the current
330  * system.  It needs some more thought, perhaps after the current system
331  * evolves a little.
332  */
333 typedef enum _MetaKeyBindingAction
334 {
335   META_KEYBINDING_ACTION_NONE,
336   META_KEYBINDING_ACTION_WORKSPACE_1,
337   META_KEYBINDING_ACTION_WORKSPACE_2,
338   META_KEYBINDING_ACTION_WORKSPACE_3,
339   META_KEYBINDING_ACTION_WORKSPACE_4,
340   META_KEYBINDING_ACTION_WORKSPACE_5,
341   META_KEYBINDING_ACTION_WORKSPACE_6,
342   META_KEYBINDING_ACTION_WORKSPACE_7,
343   META_KEYBINDING_ACTION_WORKSPACE_8,
344   META_KEYBINDING_ACTION_WORKSPACE_9,
345   META_KEYBINDING_ACTION_WORKSPACE_10,
346   META_KEYBINDING_ACTION_WORKSPACE_11,
347   META_KEYBINDING_ACTION_WORKSPACE_12,
348   META_KEYBINDING_ACTION_WORKSPACE_LEFT,
349   META_KEYBINDING_ACTION_WORKSPACE_RIGHT,
350   META_KEYBINDING_ACTION_WORKSPACE_UP,
351   META_KEYBINDING_ACTION_WORKSPACE_DOWN,
352   META_KEYBINDING_ACTION_WORKSPACE_LAST,
353   META_KEYBINDING_ACTION_SWITCH_APPLICATIONS,
354   META_KEYBINDING_ACTION_SWITCH_APPLICATIONS_BACKWARD,
355   META_KEYBINDING_ACTION_SWITCH_GROUP,
356   META_KEYBINDING_ACTION_SWITCH_GROUP_BACKWARD,
357   META_KEYBINDING_ACTION_SWITCH_WINDOWS,
358   META_KEYBINDING_ACTION_SWITCH_WINDOWS_BACKWARD,
359   META_KEYBINDING_ACTION_SWITCH_PANELS,
360   META_KEYBINDING_ACTION_SWITCH_PANELS_BACKWARD,
361   META_KEYBINDING_ACTION_CYCLE_GROUP,
362   META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD,
363   META_KEYBINDING_ACTION_CYCLE_WINDOWS,
364   META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD,
365   META_KEYBINDING_ACTION_CYCLE_PANELS,
366   META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD,
367   META_KEYBINDING_ACTION_SHOW_DESKTOP,
368   META_KEYBINDING_ACTION_PANEL_RUN_DIALOG,
369   META_KEYBINDING_ACTION_TOGGLE_RECORDING,
370   META_KEYBINDING_ACTION_SET_SPEW_MARK,
371   META_KEYBINDING_ACTION_ACTIVATE_WINDOW_MENU,
372   META_KEYBINDING_ACTION_TOGGLE_FULLSCREEN,
373   META_KEYBINDING_ACTION_TOGGLE_MAXIMIZED,
374   META_KEYBINDING_ACTION_TOGGLE_TILED_LEFT,
375   META_KEYBINDING_ACTION_TOGGLE_TILED_RIGHT,
376   META_KEYBINDING_ACTION_TOGGLE_ABOVE,
377   META_KEYBINDING_ACTION_MAXIMIZE,
378   META_KEYBINDING_ACTION_UNMAXIMIZE,
379   META_KEYBINDING_ACTION_TOGGLE_SHADED,
380   META_KEYBINDING_ACTION_MINIMIZE,
381   META_KEYBINDING_ACTION_CLOSE,
382   META_KEYBINDING_ACTION_BEGIN_MOVE,
383   META_KEYBINDING_ACTION_BEGIN_RESIZE,
384   META_KEYBINDING_ACTION_TOGGLE_ON_ALL_WORKSPACES,
385   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_1,
386   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_2,
387   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_3,
388   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_4,
389   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_5,
390   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_6,
391   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_7,
392   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_8,
393   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_9,
394   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_10,
395   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_11,
396   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_12,
397   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LEFT,
398   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_RIGHT,
399   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_UP,
400   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_DOWN,
401   META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LAST,
402   META_KEYBINDING_ACTION_MOVE_TO_MONITOR_LEFT,
403   META_KEYBINDING_ACTION_MOVE_TO_MONITOR_RIGHT,
404   META_KEYBINDING_ACTION_MOVE_TO_MONITOR_UP,
405   META_KEYBINDING_ACTION_MOVE_TO_MONITOR_DOWN,
406   META_KEYBINDING_ACTION_RAISE_OR_LOWER,
407   META_KEYBINDING_ACTION_RAISE,
408   META_KEYBINDING_ACTION_LOWER,
409   META_KEYBINDING_ACTION_MAXIMIZE_VERTICALLY,
410   META_KEYBINDING_ACTION_MAXIMIZE_HORIZONTALLY,
411   META_KEYBINDING_ACTION_MOVE_TO_CORNER_NW,
412   META_KEYBINDING_ACTION_MOVE_TO_CORNER_NE,
413   META_KEYBINDING_ACTION_MOVE_TO_CORNER_SW,
414   META_KEYBINDING_ACTION_MOVE_TO_CORNER_SE,
415   META_KEYBINDING_ACTION_MOVE_TO_SIDE_N,
416   META_KEYBINDING_ACTION_MOVE_TO_SIDE_S,
417   META_KEYBINDING_ACTION_MOVE_TO_SIDE_E,
418   META_KEYBINDING_ACTION_MOVE_TO_SIDE_W,
419   META_KEYBINDING_ACTION_MOVE_TO_CENTER,
420   META_KEYBINDING_ACTION_OVERLAY_KEY,
421   META_KEYBINDING_ACTION_LOCATE_POINTER_KEY,
422   META_KEYBINDING_ACTION_ISO_NEXT_GROUP,
423   META_KEYBINDING_ACTION_ALWAYS_ON_TOP,
424   META_KEYBINDING_ACTION_SWITCH_MONITOR,
425   META_KEYBINDING_ACTION_ROTATE_MONITOR,
426 
427   META_KEYBINDING_ACTION_LAST
428 } MetaKeyBindingAction;
429 
430 /**
431  * MetaKeyBindingFlags:
432  * @META_KEY_BINDING_NONE: none
433  * @META_KEY_BINDING_PER_WINDOW: per-window
434  * @META_KEY_BINDING_BUILTIN: built-in
435  * @META_KEY_BINDING_IS_REVERSED: is reversed
436  * @META_KEY_BINDING_NON_MASKABLE: always active
437  * @META_KEY_BINDING_NO_AUTO_GRAB: not grabbed automatically
438  */
439 typedef enum
440 {
441   META_KEY_BINDING_NONE,
442   META_KEY_BINDING_PER_WINDOW   = 1 << 0,
443   META_KEY_BINDING_BUILTIN      = 1 << 1,
444   META_KEY_BINDING_IS_REVERSED  = 1 << 2,
445   META_KEY_BINDING_NON_MASKABLE = 1 << 3,
446   META_KEY_BINDING_IGNORE_AUTOREPEAT = 1 << 4,
447   META_KEY_BINDING_NO_AUTO_GRAB = 1 << 5,
448 } MetaKeyBindingFlags;
449 
450 /**
451  * MetaKeyHandlerFunc:
452  * @display: a #MetaDisplay
453  * @window: a #MetaWindow
454  * @event: (type gpointer): a #ClutterKeyEvent
455  * @binding: a #MetaKeyBinding
456  * @user_data: data passed to the function
457  *
458  */
459 typedef void (* MetaKeyHandlerFunc) (MetaDisplay     *display,
460                                      MetaWindow      *window,
461                                      ClutterKeyEvent *event,
462                                      MetaKeyBinding  *binding,
463                                      gpointer         user_data);
464 
465 META_EXPORT
466 GType meta_key_binding_get_type    (void);
467 
468 META_EXPORT
469 MetaKeyBindingAction meta_prefs_get_keybinding_action (const char *name);
470 
471 META_EXPORT
472 gboolean           meta_prefs_get_visual_bell      (void);
473 
474 META_EXPORT
475 gboolean           meta_prefs_bell_is_audible      (void);
476 
477 META_EXPORT
478 GDesktopVisualBellType meta_prefs_get_visual_bell_type (void);
479 
480 META_EXPORT
481 unsigned int meta_prefs_get_check_alive_timeout (void);
482 
483 #endif
484