How do I get size of the screen excluding Unity side panel in GDK
Asked Answered
N

1

10

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
Newfashioned answered 6/5, 2012 at 16:24 Comment(0)
F
1

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. (https://mcmap.net/q/353721/-what-is-my-current-desktop-environment)

Flour answered 30/5, 2012 at 14:30 Comment(1)
Launcher width is bigger than icon_size value. Now I have launcher width = 50 and icon_size = 32.Newfashioned

© 2022 - 2024 — McMap. All rights reserved.