2012-05-06 2 views
9

Я пытаюсь заставить терминал Гэка правильно работать в Unity. Его окно имеет ширину, равную ширине экрана. Но из-за того, что правая граница левой границы окна Unity становится невидимой. Итак, я хочу установить правильную ширину окна. Он должен быть меньше фактического размера окна. И код должен работать корректно с Unity или без него.Как получить размер экрана, исключая боковую панель Unity в GDK

Это как Guake определяет положение и размер его окна:

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 

ответ

1

Так что вы хотите вычитать ширину единства пусковой с вашего total_width. Этот размер может быть определен с помощью GConf, чтобы получить значение иконок пусковых:

self.client.get_int('/apps/compiz-1/plugins/unityshell/screen0/options/icon_size') 

, конечно, вы также хотите знать, если текущая продолжительная сессия действительно единство:

os.environ.get('DESKTOP_SESSION') == 'ubuntu' 

кажется хорошим решение. (http://stackoverflow.com/questions/2035657/what-is-my-current-desktop-environment)

+0

Ширина пускового устройства больше, чем значение 'icon_size'. Теперь у меня ширина пусковой установки = 50 и icon_size = 32. –