2012-12-14 44 views
4

Mozilla Firefox和Ubuntu Software Center等應用程序能夠將標題欄漸變擴展到其工具欄區域。舉例如下:如何在Ubuntu Unity中獲得擴展標題欄?

Screenshot illustrating the extended title bar effect in Ubuntu Unity

我如何能實現我的應用程序相同的效果?

+0

在相同顏色的工具欄下創建漸變? – Linuxios

+0

統一標籤用於Microsoft Unity。請不要濫用它。 –

回答

3

首先,您提到的兩個應用程序使用不同的工具包和技術構建,因此採用不同的方法來執行您願意執行的操作。雖然Firefox使用XUL/GTK2,但USC使用GTK3。我會解釋兩種方法。

  1. Ubuntu軟件中心使用GTK3建成,因此它的工具欄梯度的主題CSS文件中定義。是實現這一代碼是

    /* primary-toolbar */ 
    .primary-toolbar, 
    .primary-toolbar .toolbar, 
    .primary-toolbar.toolbar { 
    -GtkWidget-window-dragging: true; 
    
    background-image: -gtk-gradient (linear, left top, left bottom, 
               from (shade (@dark_bg_color, 0.96)), 
               to (shade (@dark_bg_color, 1.4))); 
    border-bottom-color: shade (@dark_bg_color, 1.1); 
    border-top-color: shade (@dark_bg_color, 1.09); 
    border-style: solid; 
    border-width: 1px 0 1px 0; 
    
    color: @dark_fg_color; 
    text-shadow: 0 -1px shade (@dark_bg_color, 0.7); 
    
    box-shadow: inset 0 1px shade (@dark_bg_color, 0.94); 
    } 
    

    爲了在gtk3應用程序中使用此,您必須將類primary-toolbar分配到工具欄。有關相關文檔,請查看here

  2. Firefox是使用XUL構建的,並使用GTK2在GNU/Linux發行版(如Ubuntu)上呈現小部件。 Firefox的tab-bar的樣式來自相關主題的gtkrc文件中定義的menubar的外觀定義。在默認主題氛圍的情況下,

    style "menubar" = "dark" { 
        engine "murrine" { 
        textstyle = 2 
        text_shade = 0.33 
        gradient_shades = {1.0, 1.0, 1.0, 1.0} 
        lightborder_shade = 1.0 
        } 
    } 
    

有可能實現與不同方法的其他工具包的效果,但建議你寫在gtk3您的應用程序,以便使用本機造型。

+0

我正在使用Qt - 是否有任何方式調用GTK並檢索適當的顏色? –

+0

在像Unity這樣的'gtk'環境下運行時,Qt使用一個名爲'Qgtkstyle'的主題渲染器,它使用當前的'gtk2'主題來渲染窗口部件。如果你嘗試在應用程序中使用'GtkStyleContext',那麼你會得到一個錯誤,你不能在同一個進程中運行gtk2和gtk3。我發現這[鏈接](http://stackoverflow.com/questions/7903518/gtk3-getting-a-styles-class-property)。儘管它沒有多大意義,但它暗示了可以使用的解決方案,但它會迫使您手動設計整個應用程序。 –

+0

你也可以這樣做。在應用程序初始化之前產生一個子進程,並使用它通過GtkStyleContext獲取屬性。然後使用這些屬性爲工具欄繪製自定義樣式。請注意,我不知道你是否可以在Qt中做到這一點,這只是一個猜測。 –

相關問題