2012-05-06 8 views
9

UnityでGuakeターミナルを正しく動作させようとしています。ウィンドウの幅は画面の幅と同じです。しかしUnityのために、左のバーウィンドウの右のボーダーは見えなくなります。だから、ウィンドウの幅を適切に設定したい。実際のウィンドウサイズより小さくする必要があります。コードは、Unityの有無にかかわらず正しく動作する必要があります。GDKのUnityサイドパネルを除く画面のサイズを取得する方法

これは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') 

あなたは、現在実行中のセッションが実際に1であるかどうかを知りたい:

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

が良いようです溶液。 (http://stackoverflow.com/questions/2035657/what-is-my-current-desktop-environment)

+0

ランチャーの幅が 'icon_size'値よりも大きいです。今私はランチャーの幅= 50とicon_size = 32を持っています。 –

関連する問題