2
# -*- coding: utf-8 -*-
5
# J Phani Mahesh <phanimahesh@gmail.com>
6
# Barneedhar (jokerdino) <barneedhar@ubuntu.com>
7
# Amith KK <amithkumaran@gmail.com>
8
# Georgi Karavasilev <motorslav@gmail.com>
9
# Sam Tran <samvtran@gmail.com>
10
# Sam Hewitt <hewittsamuel@gmail.com>
11
# Angel Araya <al.arayaq@gmail.com>
14
# A One-stop configuration tool for Unity.
18
# This file is a part of Unity Tweak Tool
20
# Unity Tweak Tool is free software; you can redistribute it and/or modify it under
21
# the terms of the GNU General Public License as published by the Free Software
22
# Foundation; version 3.
24
# Unity Tweak Tool is distributed in the hope that it will be useful, but WITHOUT
25
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
26
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
29
# You should have received a copy of the GNU General Public License along with
30
# this program; if not, see <https://www.gnu.org/licenses/gpl-3.0.txt>
35
from gi.repository import Gtk, Gdk
36
from math import pi, sqrt
38
from UnityTweakTool.config.ui import ui
39
from . import unitytweakconfig
40
from . import gsettings
42
class Compizsettings ():
43
def __init__(self, builder):
45
self.page = self.ui['nb_compizsettings']
47
self.ui['scale_auto_raise_delay'].add_mark(500, Gtk.PositionType.BOTTOM, None)
50
# Initialise Cairo bits
51
self.window_snapping_drawable = self.ui['draw_window_snapping']
52
self._base_window_snapping_surface = cairo.ImageSurface.create_from_png(os.path.join(unitytweakconfig.get_data_path(), 'monitor-window-snapping.png'))
54
self.hotcorners_drawable = self.ui['draw_hotcorners']
55
self._base_hotcorners_surface = cairo.ImageSurface.create_from_png(os.path.join(unitytweakconfig.get_data_path(), 'monitor-hotcorners.png'))
57
self.window_snapping_cboxes = {
58
'cbox_window_snapping_top': [0, 'top-edge-action'],
59
'cbox_window_snapping_topleft': [0, 'top-left-corner-action'],
60
'cbox_window_snapping_left': [0, 'left-edge-action'],
61
'cbox_window_snapping_bottomleft': [0, 'bottom-left-corner-action'],
62
'cbox_window_snapping_bottom': [0, 'bottom-edge-action'],
63
'cbox_window_snapping_topright': [0, 'top-right-corner-action'],
64
'cbox_window_snapping_right': [0, 'right-edge-action'],
65
'cbox_window_snapping_bottomright': [0, 'bottom-right-corner-action']
68
self.hotcorners_cboxes = {
69
'cbox_hotcorners_top': [0, 'Top'],
70
'cbox_hotcorners_topleft': [0, 'TopLeft'],
71
'cbox_hotcorners_left': [0, 'Left'],
72
'cbox_hotcorners_bottomleft': [0, 'BottomLeft'],
73
'cbox_hotcorners_bottom': [0, 'Bottom'],
74
'cbox_hotcorners_topright': [0, 'TopRight'],
75
'cbox_hotcorners_right': [0, 'Right'],
76
'cbox_hotcorners_bottomright': [0, 'BottomRight']
79
def on_draw_hotcorners_draw (self, window, cr):
80
self.draw_monitor(window, cr, self._base_hotcorners_surface, self.hotcorners_cboxes, 'hotcorners')
82
def on_draw_window_snapping_draw (self, window, cr):
83
self.draw_monitor(window, cr, self._base_window_snapping_surface, self.window_snapping_cboxes, 'window_snapping')
85
def draw_monitor (self, window, cr, base_surface, corner_store, cbox_title):
90
x3 = 116 # Top/bottom side left-corner
91
y3 = 73 # Left/right side top-corner
98
cr.set_source_surface(base_surface)
100
cr.set_source_rgba(221/255, 72/255, 20/255)
102
if corner_store['cbox_' + cbox_title + '_top'][0] != 0:
105
cr.line_to (x3 + top_bottom_width, y1)
106
values = self.arc_values(top_bottom_width, side_height)
107
cr.arc(x3 + (top_bottom_width / 2), y1 - values['offset'], values['radius'], pi/4 , (3 * pi)/4)
110
if corner_store['cbox_' + cbox_title + '_topleft'][0] != 0:
113
cr.line_to(x1 + corner_width, y1)
114
cr.arc(x1, y1, corner_width, 0, pi/2)
118
if corner_store['cbox_' + cbox_title + '_left'][0] != 0:
120
cr.move_to(x1, y3 + left_right_width)
122
values = self.arc_values(left_right_width, side_height)
123
cr.arc(x1 - values['offset'], y3 + (left_right_width / 2), values['radius'], -pi/4, pi/4)
126
if corner_store['cbox_' + cbox_title + '_bottomleft'][0] != 0:
128
cr.move_to(x1, y2 - corner_width)
130
cr.line_to(x1 + corner_width, y2)
131
cr.arc(x1, y2, corner_width, - pi / 2, 0)
134
if corner_store['cbox_' + cbox_title + '_bottom'][0] != 0:
136
cr.move_to(x3 + top_bottom_width, y2)
138
values = self.arc_values(top_bottom_width, side_height)
139
cr.arc(x3 + (top_bottom_width / 2), y2 + values['offset'], values['radius'], (5 * pi) / 4, (7 * pi) / 4)
142
if corner_store['cbox_' + cbox_title + '_topright'][0] != 0:
145
cr.line_to(x2, y1 + corner_width)
146
cr.arc(x2, y1, corner_width, pi / 2, pi)
150
if corner_store['cbox_' + cbox_title + '_right'][0] != 0:
154
cr.line_to(x2, y3 + left_right_width)
155
values = self.arc_values(left_right_width, side_height)
156
cr.arc(x2 + values['offset'], y3 + (left_right_width / 2), values['radius'], (3 * pi) / 4, (5 * pi) / 4)
159
if corner_store['cbox_' + cbox_title + '_bottomright'][0] != 0:
162
cr.line_to(x2 - corner_width, y2)
163
cr.arc(x2, y2, corner_width, pi, (3 * pi ) / 2)
167
def arc_values (self, length, height):
168
# radius = (h^2 + 1/4 length^2)/2h
169
radius = ((height**2) + (.25 * (length**2))) / (2 * height)
172
'offset': sqrt((radius**2) - ((length / 2)**2))
175
def on_cbox_window_snapping_changed (self, combobox, cbox_id):
176
self.window_snapping_cboxes[cbox_id][0] = combobox.get_active()
177
gsettings.grid.set_int(self.window_snapping_cboxes[cbox_id][1], combobox.get_active())
178
self.window_snapping_drawable.queue_draw()
180
def on_cbox_hotcorners_changed (self, combobox, cbox_id):
181
self.hotcorners_cboxes[cbox_id][0] = combobox.get_active()
183
if combobox.get_active() == 0:
184
clear_corners = ['show_desktop', 'expo', 'window_spread']
186
if combobox.get_active() == 1:
187
if self.hotcorners_cboxes[cbox_id][1] not in self.hotcorner_values['show_desktop']:
188
self.hotcorner_values['show_desktop'].append(self.hotcorners_cboxes[cbox_id][1])
189
gsettings.core.set_string('show-desktop-edge', '|'.join(self.hotcorner_values['show_desktop']))
191
clear_corners.append('show_desktop')
193
if combobox.get_active() == 2:
194
if self.hotcorners_cboxes[cbox_id][1] not in self.hotcorner_values['expo']:
195
self.hotcorner_values['expo'].append(self.hotcorners_cboxes[cbox_id][1])
196
gsettings.expo.set_string('expo-edge', '|'.join(self.hotcorner_values['expo']))
198
clear_corners.append('expo')
200
if combobox.get_active() == 3:
201
if self.hotcorners_cboxes[cbox_id][1] not in self.hotcorner_values['window_spread']:
202
self.hotcorner_values['window_spread'].append(self.hotcorners_cboxes[cbox_id][1])
203
gsettings.scale.set_string('initiate-edge', '|'.join(self.hotcorner_values['window_spread']))
205
clear_corners.append('window_spread')
207
if combobox.get_active() == 4:
208
if self.hotcorners_cboxes[cbox_id][1] not in self.hotcorner_values['all_window_spread']:
209
self.hotcorner_values['all_window_spread'].append(self.hotcorners_cboxes[cbox_id][1])
210
gsettings.scale.set_string('initiate-all-edge', '|'.join(self.hotcorner_values['all_window_spread']))
212
clear_corners.append('all_window_spread')
214
# Removing potentially conflicting bindings
215
if 'show_desktop' in clear_corners and self.hotcorners_cboxes[cbox_id][1] in self.hotcorner_values['show_desktop']:
216
self.hotcorner_values['show_desktop'].remove(self.hotcorners_cboxes[cbox_id][1])
217
gsettings.core.set_string('show-desktop-edge', '|'.join(self.hotcorner_values['show_desktop']))
218
if 'expo' in clear_corners and self.hotcorners_cboxes[cbox_id][1] in self.hotcorner_values['expo']:
219
self.hotcorner_values['expo'].remove(self.hotcorners_cboxes[cbox_id][1])
220
gsettings.expo.set_string('expo-edge', '|'.join(self.hotcorner_values['expo']))
221
if 'window_spread' in clear_corners and self.hotcorners_cboxes[cbox_id][1] in self.hotcorner_values['window_spread']:
222
self.hotcorner_values['window_spread'].remove(self.hotcorners_cboxes[cbox_id][1])
223
gsettings.scale.set_string('initiate-edge', '|'.join(self.hotcorner_values['window_spread']))
224
if 'all_window_spread' in clear_corners and self.hotcorners_cboxes[cbox_id][1] in self.hotcorner_values['all_window_spread']:
225
self.hotcorner_values['all_window_spread'].remove(self.hotcorners_cboxes[cbox_id][1])
226
gsettings.scale.set_string('initiate-all-edge', '|'.join(self.hotcorner_values['all_window_spread']))
228
self.hotcorners_drawable.queue_draw()
231
#=====================================================================#
233
#=====================================================================#
237
plugins = gsettings.core.get_strv('active-plugins')
238
if 'ezoom' in plugins:
239
self.ui['sw_compiz_zoom'].set_active(True)
241
self.ui['sw_compiz_zoom'].set_active(False)
244
model = self.ui['list_compiz_general_zoom_accelerators']
246
zoom_in_key = gsettings.zoom.get_string('zoom-in-key')
247
iter_zoom_in_key = model.get_iter_first()
248
model.set_value(iter_zoom_in_key, 1, zoom_in_key)
250
zoom_out_key = gsettings.zoom.get_string('zoom-out-key')
251
iter_zoom_out_key = model.iter_next(iter_zoom_in_key)
252
model.set_value(iter_zoom_out_key, 1, zoom_out_key)
254
del model, zoom_in_key, iter_zoom_in_key, zoom_out_key, iter_zoom_out_key
256
self.ui['cbox_opengl'].set_active(gsettings.opengl.get_int('texture-filter'))
258
model = self.ui['list_compiz_general_keys_accelerators']
260
close_window_key = gsettings.core.get_string('close-window-key')
261
iter_close_window_key = model.get_iter_first()
262
model.set_value(iter_close_window_key, 1, close_window_key)
264
initiate_key = gsettings.move.get_string('initiate-key')
265
iter_initiate_key = model.iter_next(iter_close_window_key)
266
model.set_value(iter_initiate_key, 1, initiate_key)
268
show_desktop_key = gsettings.core.get_string('show-desktop-key')
269
iter_show_desktop_key = model.iter_next(iter_initiate_key)
270
model.set_value(iter_show_desktop_key, 1, show_desktop_key)
272
del model, close_window_key, iter_close_window_key, initiate_key, iter_initiate_key, show_desktop_key, iter_show_desktop_key
276
unminimize_value = gsettings.animation.get_strv('unminimize-effects')
277
dependants = ['cbox_minimize_animation',
278
'l_minimize_animation',
279
'cbox_unminimize_animation',
280
'l_unminimize_animation']
282
if unminimize_value == ['animation:None']:
283
self.ui['cbox_unminimize_animation'].set_active(0)
284
self.ui['switch_window_animations'].set_active(False)
285
self.ui.unsensitize(dependants)
286
elif unminimize_value == ['animation:Random']:
287
self.ui['cbox_unminimize_animation'].set_active(1)
288
self.ui['switch_window_animations'].set_active(True)
289
self.ui.sensitize(dependants)
290
elif unminimize_value == ['animation:Curved Fold']:
291
self.ui['cbox_unminimize_animation'].set_active(2)
292
self.ui['switch_window_animations'].set_active(True)
293
self.ui.sensitize(dependants)
294
elif unminimize_value == ['animation:Fade']:
295
self.ui['cbox_unminimize_animation'].set_active(3)
296
self.ui['switch_window_animations'].set_active(True)
297
self.ui.sensitize(dependants)
298
elif unminimize_value == ['animation:Glide 1']:
299
self.ui['cbox_unminimize_animation'].set_active(4)
300
self.ui['switch_window_animations'].set_active(True)
301
self.ui.sensitize(dependants)
302
elif unminimize_value == ['animation:Glide 2']:
303
self.ui['cbox_unminimize_animation'].set_active(5)
304
self.ui['switch_window_animations'].set_active(True)
305
self.ui.sensitize(dependants)
306
elif unminimize_value == ['animation:Horizontal Folds']:
307
self.ui['cbox_unminimize_animation'].set_active(6)
308
self.ui['switch_window_animations'].set_active(True)
309
self.ui.sensitize(dependants)
310
elif unminimize_value == ['animation:Magic Lamp']:
311
self.ui['cbox_unminimize_animation'].set_active(7)
312
self.ui['switch_window_animations'].set_active(True)
313
self.ui.sensitize(dependants)
314
elif unminimize_value == ['animation:Magic Lamp Wavy']:
315
self.ui['cbox_unminimize_animation'].set_active(8)
316
self.ui['switch_window_animations'].set_active(True)
317
self.ui.sensitize(dependants)
318
elif unminimize_value == ['animation:Sidekick']:
319
self.ui['cbox_unminimize_animation'].set_active(9)
320
self.ui['switch_window_animations'].set_active(True)
321
self.ui.sensitize(dependants)
322
elif unminimize_value == ['animation:Zoom']:
323
self.ui['cbox_unminimize_animation'].set_active(10)
324
self.ui['switch_window_animations'].set_active(True)
325
self.ui.sensitize(dependants)
327
self.ui['cbox_unminimize_animation'].set_active(0)
328
self.ui['switch_window_animations'].set_active(False)
329
self.ui.unsensitize(dependants)
332
minimize_value = gsettings.animation.get_strv('minimize-effects')
334
if minimize_value == ['animation:None']:
335
self.ui['cbox_minimize_animation'].set_active(0)
336
self.ui['switch_window_animations'].set_active(False)
337
self.ui.unsensitize(dependants)
338
elif minimize_value == ['animation:Random']:
339
self.ui['cbox_minimize_animation'].set_active(1)
340
self.ui['switch_window_animations'].set_active(True)
341
self.ui.sensitize(dependants)
342
elif minimize_value == ['animation:Curved Fold']:
343
self.ui['cbox_minimize_animation'].set_active(2)
344
self.ui['switch_window_animations'].set_active(True)
345
self.ui.sensitize(dependants)
346
elif minimize_value == ['animation:Fade']:
347
self.ui['cbox_minimize_animation'].set_active(3)
348
self.ui['switch_window_animations'].set_active(True)
349
self.ui.sensitize(dependants)
350
elif minimize_value == ['animation:Glide 1']:
351
self.ui['cbox_minimize_animation'].set_active(4)
352
self.ui['switch_window_animations'].set_active(True)
353
self.ui.sensitize(dependants)
354
elif minimize_value == ['animation:Glide 2']:
355
self.ui['cbox_minimize_animation'].set_active(5)
356
self.ui['switch_window_animations'].set_active(True)
357
self.ui.sensitize(dependants)
358
elif minimize_value == ['animation:Horizontal Folds']:
359
self.ui['cbox_minimize_animation'].set_active(6)
360
self.ui['switch_window_animations'].set_active(True)
361
self.ui.sensitize(dependants)
362
elif minimize_value == ['animation:Magic Lamp']:
363
self.ui['cbox_minimize_animation'].set_active(7)
364
self.ui['switch_window_animations'].set_active(True)
365
self.ui.sensitize(dependants)
366
elif minimize_value == ['animation:Magic Lamp Wavy']:
367
self.ui['cbox_minimize_animation'].set_active(8)
368
self.ui['switch_window_animations'].set_active(True)
369
self.ui.sensitize(dependants)
370
elif minimize_value == ['animation:Sidekick']:
371
self.ui['cbox_minimize_animation'].set_active(9)
372
self.ui['switch_window_animations'].set_active(True)
373
elif minimize_value == ['animation:Zoom']:
374
self.ui['cbox_minimize_animation'].set_active(10)
375
self.ui['switch_window_animations'].set_active(True)
376
self.ui.sensitize(dependants)
378
self.ui['cbox_minimize_animation'].set_active(0)
379
self.ui['switch_window_animations'].set_active(False)
380
self.ui.unsensitize(dependants)
383
# ===== Workspace settings ===== #
385
hsize = gsettings.core.get_int('hsize')
386
vsize = gsettings.core.get_int('vsize')
387
dependants = ['spin_horizontal_desktop',
388
'spin_vertical_desktop']
390
if hsize > 1 or vsize > 1:
391
self.ui['sw_workspace_switcher'].set_active(True)
392
self.ui.sensitize(dependants)
394
self.ui['sw_workspace_switcher'].set_active(False)
395
self.ui.unsensitize(dependants)
397
self.ui['spin_horizontal_desktop'].set_value(hsize)
398
self.ui['spin_vertical_desktop'].set_value(vsize)
401
color = gsettings.expo.get_string('selected-color')
402
valid, gdkcolor = Gdk.Color.parse(color[:-2])
404
self.ui['color_desk_outline'].set_color(gdkcolor)
405
del color, valid, gdkcolor
407
model = self.ui['list_compiz_workspace_accelerators']
409
expo_key = gsettings.expo.get_string('expo-key')
410
iter_expo_key = model.get_iter_first()
411
model.set_value(iter_expo_key, 1, expo_key)
413
del model, expo_key, iter_expo_key
415
# ===== Windows Spread settings ===== #
417
plugins = gsettings.core.get_strv('active-plugins')
418
if 'scale' in plugins:
419
self.ui['sw_windows_spread'].set_active(True)
421
self.ui['sw_windows_spread'].set_active(False)
424
self.ui['spin_compiz_spacing'].set_value(gsettings.scale.get_int('spacing'))
426
if gsettings.scale.get_int('overlay-icon') >= 1:
427
self.ui['check_overlay_emblem'].set_active(True)
429
self.ui['check_overlay_emblem'].set_active(False)
431
self.ui['check_click_desktop'].set_active(gsettings.scale.get_boolean('show-desktop'))
433
model = self.ui['list_compiz_windows_spread_accelerators']
435
initiate_key = gsettings.scale.get_string('initiate-key')
436
iter_initiate_key = model.get_iter_first()
437
model.set_value(iter_initiate_key, 1, initiate_key)
439
initiate_all_key = gsettings.scale.get_string('initiate-all-key')
440
iter_initiate_all_key = model.iter_next(iter_initiate_key)
441
model.set_value(iter_initiate_all_key, 1, initiate_all_key)
443
del model, initiate_key, iter_initiate_key, initiate_all_key, iter_initiate_all_key
445
# ===== Window Snapping settings ===== #
447
plugins = gsettings.core.get_strv('active-plugins')
448
if 'grid' in plugins:
449
self.ui['sw_window_snapping'].set_active(True)
451
self.ui['sw_window_snapping'].set_active(False)
454
color = gsettings.grid.get_string('fill-color')
455
valid, gdkcolor = Gdk.Color.parse(color[:-2])
457
self.ui['color_fill_color'].set_color(gdkcolor)
458
del color, valid, gdkcolor
460
color = gsettings.grid.get_string('outline-color')
461
valid, gdkcolor = Gdk.Color.parse(color[:-2])
463
self.ui['color_outline_color'].set_color(gdkcolor)
464
del color, valid, gdkcolor
466
for box in self.window_snapping_cboxes:
467
self.window_snapping_cboxes[box][0] = gsettings.grid.get_int(self.window_snapping_cboxes[box][1])
468
self.ui[box].set_active(self.window_snapping_cboxes[box][0])
469
self.ui[box].connect("changed", self.on_cbox_window_snapping_changed, box)
471
# ===== Hotcorners settings ===== #
472
self.hotcorner_values = {
473
'show_desktop': gsettings.core.get_string('show-desktop-edge').split('|'),
474
'expo': gsettings.expo.get_string('expo-edge').split('|'),
475
'window_spread': gsettings.scale.get_string('initiate-edge').split('|'),
476
'all_window_spread': gsettings.scale.get_string('initiate-all-edge').split('|')
478
for box in self.hotcorners_cboxes:
479
if self.hotcorners_cboxes[box][1] in self.hotcorner_values['show_desktop']:
480
self.hotcorners_cboxes[box][0] = 1
481
elif self.hotcorners_cboxes[box][1] in self.hotcorner_values['expo']:
482
self.hotcorners_cboxes[box][0] = 2
483
elif self.hotcorners_cboxes[box][1] in self.hotcorner_values['window_spread']:
484
self.hotcorners_cboxes[box][0] = 3
485
elif self.hotcorners_cboxes[box][1] in self.hotcorner_values['all_window_spread']:
486
self.hotcorners_cboxes[box][0] = 4
488
self.hotcorners_cboxes[box][0] = 0
489
self.ui[box].set_active(self.hotcorners_cboxes[box][0])
490
self.ui[box].connect("changed", self.on_cbox_hotcorners_changed, box)
492
# ===== Additional settings ===== #
495
self.ui['switch_auto_raise'].set_active(gsettings.wm.get_boolean('auto-raise'))
496
self.ui['scale_auto_raise_delay'].set_value(gsettings.wm.get_int('auto-raise-delay'))
499
self.ui['cbox_double_click'].set_active(gsettings.wm.get_enum('action-double-click-titlebar'))
500
self.ui['cbox_middle_click'].set_active(gsettings.wm.get_enum('action-middle-click-titlebar'))
501
self.ui['cbox_right_click'].set_active(gsettings.wm.get_enum('action-right-click-titlebar'))
504
if gsettings.wm.get_enum('focus-mode') == 0:
505
self.ui['cbox_focus_mode'].set_active(0)
506
elif gsettings.wm.get_enum('focus-mode') == 1:
507
self.ui['cbox_focus_mode'].set_active(1)
508
elif gsettings.wm.get_enum('focus-mode') == 2:
509
self.ui['cbox_focus_mode'].set_active(2)
514
color = gsettings.resize.get_string('border-color')
515
valid, gdkcolor = Gdk.Color.parse(color[:-2])
517
self.ui['colorbutton_resize_outline'].set_color(gdkcolor)
518
del color, valid, gdkcolor
520
color = gsettings.resize.get_string('fill-color')
521
valid, gdkcolor = Gdk.Color.parse(color[:-2])
523
self.ui['colorbutton_resize_fill'].set_color(gdkcolor)
524
del color, valid, gdkcolor
527
# TODO : Find a clever way or set each one manually.
528
# Do it the dumb way now. BIIIG refactoring needed later.
531
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\
532
# Dont trust glade to pass the objects properly. |
533
# Always add required references to init and use them. |
534
# That way, unity-tweak-tool can resist glade stupidity. |
535
# Apologies Gnome devs, but Glade is not our favorite. |
536
#___________________________________________________________/
538
# ===== BEGIN: Compiz settings =====
540
#-----BEGIN: General -----
542
def on_sw_compiz_zoom_active_notify(self, widget, udata = None):
543
dependants = ['scrolledwindow_compiz_general_zoom']
544
plugins = gsettings.core.get_strv('active-plugins')
545
if self.ui['sw_compiz_zoom'].get_active() == True:
546
self.ui.sensitize(dependants)
547
if 'ezoom' not in plugins:
548
plugins.append('ezoom')
549
gsettings.core.set_strv('active-plugins', plugins)
551
self.ui.unsensitize(dependants)
552
if 'ezoom' in plugins:
553
plugins.remove('ezoom')
554
gsettings.core.set_strv('active-plugins', plugins)
556
def on_craccel_compiz_general_zoom_accel_edited(self, craccel, path, key, mods, hwcode, model = None):
557
model = self.ui['list_compiz_general_zoom_accelerators']
558
accel = Gtk.accelerator_name(key, mods)
559
titer = model.get_iter(path)
560
model.set_value(titer, 1, accel)
562
gsettings.zoom.set_string('zoom-in-key', accel)
564
gsettings.zoom.set_string('zoom-out-key', accel)
566
def on_craccel_compiz_general_zoom_accel_cleared(self, craccel, path, model = None):
567
model = self.ui['list_compiz_general_zoom_accelerators']
568
titer = model.get_iter(path)
569
model.set_value(titer, 1, "Disabled")
571
gsettings.zoom.set_string('zoom-in-key', "Disabled")
573
gsettings.zoom.set_string('zoom-out-key', "Disabled")
575
def on_cbox_opengl_changed(self, widget, udata = None):
576
gsettings.opengl.set_int('texture-filter', self.ui['cbox_opengl'].get_active())
578
def on_craccel_compiz_general_keys_accel_edited(self, craccel, path, key, mods, hwcode, model = None):
579
model = self.ui['list_compiz_general_keys_accelerators']
580
accel = Gtk.accelerator_name(key, mods)
581
titer = model.get_iter(path)
582
model.set_value(titer, 1, accel)
584
gsettings.core.set_string('close-window-key', accel)
586
gsettings.move.set_string('initiate-key', accel)
588
gsettings.core.set_string('show-desktop-key', accel)
590
def on_craccel_compiz_general_keys_accel_cleared(self, craccel, path, model = None):
591
titer = model.get_iter(path)
592
self.ui['list_compiz_general_keys_accelerators'].set_value(titer, 1, "Disabled")
594
gsettings.core.set_string('close-window-key', "Disabled")
596
gsettings.move.set_string('initiate-key', "Disabled")
598
gsettings.core.set_string('show-desktop-key', "Disabled")
600
#-----General: Animations
602
def on_switch_window_animations_active_notify(self, widget, udata = None):
603
dependants = ['cbox_minimize_animation',
604
'l_minimize_animation',
605
'cbox_unminimize_animation',
606
'l_unminimize_animation']
608
if self.ui['switch_window_animations'].get_active() == True:
609
self.ui.sensitize(dependants)
610
maximize_combobox_text = self.ui['cbox_minimize_animation'].get_active_text()
611
gsettings.animation.set_strv('minimize-effects', ['animation:'+maximize_combobox_text])
612
minimize_combobox_text = self.ui['cbox_unminimize_animation'].get_active_text()
613
gsettings.animation.set_strv('unminimize-effects', ['animation:'+minimize_combobox_text])
615
self.ui.unsensitize(dependants)
616
gsettings.animation.set_strv('minimize-effects', ['animation:None'])
617
gsettings.animation.set_strv('unminimize-effects', ['animation:None'])
619
def on_cbox_unminimize_animation_changed(self, widget, udata = None):
620
combobox_text = self.ui['cbox_unminimize_animation'].get_active_text()
621
gsettings.animation.set_strv('unminimize-effects', ['animation:'+combobox_text])
623
def on_cbox_minimize_animation_changed(self, widget, udata = None):
624
combobox_text = self.ui['cbox_minimize_animation'].get_active_text()
625
gsettings.animation.set_strv('minimize-effects', ['animation:'+combobox_text])
627
def on_b_compiz_general_reset_clicked(self, widget):
628
gsettings.core.reset('active-plugins')
629
gsettings.animation.reset('unminimize-effects')
630
gsettings.animation.reset('minimize-effects')
631
gsettings.zoom.reset('zoom-in-key')
632
gsettings.zoom.reset('zoom-out-key')
633
gsettings.opengl.reset('texture-filter')
634
gsettings.opengl.reset('sync-to-vblank')
635
gsettings.core.reset('close-window-key')
636
gsettings.move.reset('initiate-key')
637
gsettings.core.reset('show-desktop-key')
640
#-----BEGIN: Workspaces -----
642
def on_sw_workspace_switcher_active_notify(self, widget, udata = None):
643
dependants = ['l_horizontal_desktop',
644
'l_vertical_desktop',
645
'spin_horizontal_desktop',
646
'spin_vertical_desktop']
648
if self.ui['sw_workspace_switcher'].get_active() == True:
649
self.ui.sensitize(dependants)
650
gsettings.core.set_int('hsize', 2)
651
gsettings.core.set_int('hsize', 2)
652
self.ui['spin_horizontal_desktop'].set_value(2)
653
self.ui['spin_vertical_desktop'].set_value(2)
656
self.ui.unsensitize(dependants)
657
gsettings.core.set_int('hsize', 1)
658
gsettings.core.set_int('vsize', 1)
659
self.ui['spin_horizontal_desktop'].set_value(1)
660
self.ui['spin_vertical_desktop'].set_value(1)
662
def on_spin_horizontal_desktop_value_changed(self, widget, udata = None):
663
gsettings.core.set_int('hsize', self.ui['spin_horizontal_desktop'].get_value())
665
def on_spin_vertical_desktop_value_changed(self, widget, udata = None):
666
gsettings.core.set_int('vsize', self.ui['spin_vertical_desktop'].get_value())
668
def on_color_desk_outline_color_set(self, widget, udata = None):
669
colorhash = gsettings.color_to_hash(self.ui['color_desk_outline'].get_color(),alpha=1)
670
gsettings.expo.set_string('selected-color', colorhash)
672
def on_craccel_compiz_workspace_accel_edited(self, craccel, path, key, mods, hwcode, model = None):
673
accel = Gtk.accelerator_name(key, mods)
674
titer = self.ui['list_compiz_workspace_accelerators'].get_iter(path)
675
self.ui['list_compiz_workspace_accelerators'].set_value(titer, 1, accel)
676
gsettings.expo.set_string('expo-key', accel)
678
def on_craccel_compiz_workspace_accel_cleared(self, craccel, path, model = None):
679
titer = self.ui['list_compiz_workspace_accelerators'].get_iter(path)
680
self.ui['list_compiz_workspace_accelerators'].set_value(titer, 1, "Disabled")
681
gsettings.expo.set_string('expo-key', "Disabled")
683
def on_b_compiz_workspace_reset_clicked(self, widget):
684
gsettings.core.reset('hsize')
685
gsettings.core.reset('vsize')
686
gsettings.expo.reset('selected-color')
687
gsettings.expo.reset('expo-key')
690
#-----BEGIN: Windows Spread -----
692
def on_sw_windows_spread_active_notify(self, widget, udata = None):
693
dependants = ['l_compiz_spacing',
694
'spin_compiz_spacing',
695
'check_overlay_emblem',
696
'check_click_desktop',
697
'scrolledwindow_compiz_window_spread']
699
plugins = gsettings.core.get_strv('active-plugins')
701
if self.ui['sw_windows_spread'].get_active() == True:
702
self.ui.sensitize(dependants)
703
if 'scale' not in plugins:
704
plugins.append('scale')
705
gsettings.core.set_strv('active-plugins', plugins)
707
self.ui.unsensitize(dependants)
708
if 'scale' in plugins:
709
plugins.remove('scale')
710
gsettings.core.set_strv('active-plugins', plugins)
712
def on_spin_compiz_spacing_value_changed(self, widget):
713
gsettings.scale.set_int('spacing', self.ui['spin_compiz_spacing'].get_value())
715
def on_check_overlay_emblem_toggled(self, widget):
716
if self.ui['check_overlay_emblem'].get_active() == True:
717
gsettings.scale.set_int('overlay-icon', 1)
719
gsettings.scale.set_int('overlay-icon', 0)
721
def on_check_click_desktop_toggled(self, widget):
722
if self.ui['check_click_desktop'].get_active() == True:
723
gsettings.scale.set_boolean('show-desktop', True)
725
gsettings.scale.set_boolean('show-desktop', False)
727
def on_craccel_compiz_windows_spread_accel_edited(self, craccel, path, key, mods, hwcode, model = None):
728
accel = Gtk.accelerator_name(key, mods)
729
titer = self.ui['list_compiz_windows_spread_accelerators'].get_iter(path)
730
self.ui['list_compiz_windows_spread_accelerators'].set_value(titer, 1, accel)
732
gsettings.scale.set_string("initiate-key", accel)
734
gsettings.scale.set_string("initiate-all-key", accel)
736
def on_craccel_compiz_windows_spread_accel_cleared(self, craccel, path, model = None):
737
titer = model.get_iter(path)
738
self.ui['list_compiz_windows_spread_accelerators'].set_value(titer, 1, "Disabled")
740
gsettings.scale.set_string("initiate-key", "Disabled")
742
gsettings.scale.set_string("initiate-all-key", "Disabled")
744
def on_b_compiz_windows_spread_reset_clicked(self, widget):
745
gsettings.core.reset('active-plugins')
746
gsettings.scale.reset('spacing')
747
gsettings.scale.reset('overlay-icon')
748
gsettings.scale.reset('show-desktop')
749
gsettings.scale.reset('initiate-key')
750
gsettings.scale.reset('initiate-all-key')
753
#-----BEGIN: Window Snapping -----
755
def on_sw_window_snapping_active_notify(self, widget, udata=None):
757
plugins = gsettings.core.get_strv('active-plugins')
758
if self.ui['sw_window_snapping'].get_active() == True:
759
if 'grid' not in plugins:
760
plugins.append('grid')
761
gsettings.core.set_strv('active-plugins', plugins)
763
if 'grid' in plugins:
764
plugins.remove('grid')
765
gsettings.core.set_strv('active-plugins', plugins)
767
def on_color_outline_color_color_set(self, widget, udata=None):
768
colorhash = gsettings.color_to_hash(self.ui['color_outline_color'].get_color(),alpha=1)
769
gsettings.grid.set_string('outline-color', colorhash)
771
def on_color_fill_color_color_set(self, widget, udata=None):
772
colorhash = gsettings.color_to_hash(self.ui['color_fill_color'].get_color(),alpha=0.31)
773
gsettings.grid.set_string('fill-color', colorhash)
775
def on_b_compiz_windowsnapping_reset_clicked(self, widget):
776
gsettings.core.reset('active-plugins')
777
gsettings.grid.reset('fill-color')
778
gsettings.grid.reset('outline-color')
779
gsettings.grid.reset('top-left-corner-action')
780
gsettings.grid.reset('top-edge-action')
781
gsettings.grid.reset('top-right-corner-action')
782
gsettings.grid.reset('left-edge-action')
783
gsettings.grid.reset('right-edge-action')
784
gsettings.grid.reset('bottom-left-corner-action')
785
gsettings.grid.reset('bottom-edge-action')
786
gsettings.grid.reset('bottom-right-corner-action')
790
# ----- BEGIN: Hot Corners -----
792
def on_switch_hotcorners_active_notify(self, widget, udata = None):
793
dependants = ['cbox_hotcorners_topleft',
794
'cbox_hotcorners_left',
795
'cbox_hotcorners_bottomleft',
796
'cbox_hotcorners_topright',
797
'cbox_hotcorners_right',
798
'cbox_hotcorners_bottomright',
799
'cbox_hotcorners_top',
800
'cbox_hotcorners_bottom']
802
if not hasattr(self, 'hotcorners_previous'):
803
self.hotcorners_previous = {}
805
if self.ui['switch_hotcorners'].get_active() == True:
806
self.ui.sensitize(dependants)
807
for box in self.hotcorners_cboxes:
808
self.ui[box].set_active(self.hotcorners_previous[box])
811
self.ui.unsensitize(dependants)
812
for box in self.hotcorners_cboxes:
813
self.hotcorners_previous[box] = self.hotcorners_cboxes[box][0]
814
self.ui[box].set_active(0)
816
def on_b_compiz_hotcorners_reset_clicked(self, widget):
817
gsettings.core.reset('show-desktop-edge')
818
gsettings.expo.reset('expo-edge')
819
gsettings.scale.reset('initiate-edge')
820
gsettings.scale.reset('initiate-all-edge')
823
# ----- BEGIN: Additional -----
825
def on_switch_auto_raise_active_notify(self, widget, udata = None):
826
if self.ui['switch_auto_raise'].get_active() == True:
827
gsettings.wm.set_boolean('auto-raise', True)
829
gsettings.wm.set_boolean('auto-raise', False)
831
def on_cbox_focus_mode_changed(self, widget, udata = None):
832
gsettings.wm.set_enum('focus-mode', self.ui['cbox_focus_mode'].get_active())
834
def on_cbox_double_click_changed(self, widget, udata = None):
835
gsettings.wm.set_enum('action-double-click-titlebar', self.ui['cbox_double_click'].get_active())
837
def on_cbox_middle_click_changed(self, widget, udata = None):
838
gsettings.wm.set_enum('action-middle-click-titlebar', self.ui['cbox_middle_click'].get_active())
840
def on_cbox_right_click_changed(self, widget, udata = None):
841
gsettings.wm.set_enum('action-right-click-titlebar', self.ui['cbox_right_click'].get_active())
843
def on_scale_auto_raise_delay_value_changed(self, widget, udata = None):
844
value = self.ui['scale_auto_raise_delay'].get_value()
845
gsettings.wm.set_int('auto-raise-delay', value)
848
def on_colorbutton_resize_outline_color_set(self, widget, udata=None):
849
colorhash = gsettings.color_to_hash(self.ui['colorbutton_resize_outline'].get_color(),alpha=1)
850
gsettings.resize.set_string('border-color', colorhash)
852
def on_colorbutton_resize_fill_color_set(self, widget, udata=None):
853
colorhash = gsettings.color_to_hash(self.ui['colorbutton_resize_fill'].get_color(),alpha=0.31)
854
gsettings.resize.set_string('fill-color', colorhash)
856
def on_b_wm_additional_reset_clicked(self, widget):
857
gsettings.wm.reset('auto-raise-delay')
858
gsettings.wm.reset('auto-raise')
859
gsettings.wm.reset('focus-mode')
860
gsettings.wm.reset('action-double-click-titlebar')
861
gsettings.wm.reset('action-middle-click-titlebar')
862
gsettings.wm.reset('action-right-click-titlebar')
863
gsettings.resize.reset('border-color')
864
gsettings.resize.reset('fill-color')
867
if __name__ == '__main__':
868
# Fire up the Engines
870
# FIXME : This is guaranteed to fail.