I'm trying to make Guake terminal work correctly in Unity. Its window have width that is equal to screen width. But because of Unity left bar window's right border becomes invisible. So, I want to set proper width for window. It must be smaller than actual window size. And the code must work correctly with or without Unity.
This is how Guake determines position and size of its window:
def get_final_window_rect(self):
"""Gets the final size of the main window of guake. The height
is the window_height property, width is window_width and the
horizontal alignment is given by window_alignment.
"""
screen = self.window.get_screen()
height = self.client.get_int(KEY('/general/window_height'))
width = 100
halignment = self.client.get_int(KEY('/general/window_halignment'))
# get the rectangle just from the first/default monitor in the
# future we might create a field to select which monitor you
# wanna use
window_rect = screen.get_monitor_geometry(0)
total_width = window_rect.width
window_rect.height = window_rect.height * height / 100
window_rect.width = window_rect.width * width / 100
if width < total_width:
if halignment == ALIGN_CENTER:
window_rect.x = (total_width - window_rect.width) / 2
elif halignment == ALIGN_LEFT:
window_rect.x = 0
elif halignment == ALIGN_RIGHT:
window_rect.x = total_width - window_rect.width
window_rect.y = 0
window_rect.width = 250
return window_rect
So you want to substract unity launcher width from your total_width. This size can be determined using gconf to get the value of launcher icons :
self.client.get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size')
of course you also want to know if the current running session is indeed unity :
os.environ.get('DESKTOP_SESSION') == 'ubuntu'
seems to be a good solution. (http://stackoverflow.com/questions/2035657/what-is-my-current-desktop-environment)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With