2015-09-06 55 views
0

我在python中獲得libwnck的窗口列表。但我無法獲得應用程序的圖標路徑。libwnck如何找到應用程序/窗口的圖標路徑

import wnck 

screenW = wnck.screen_get_default(); 
screenW.force_update() 

windows = screenW.get_windows() 
    list = [] 
    for window in windows: 
    print 'icon name: ' + window.get_application().get_icon_name() 

get_icon_name返回窗口的名稱/標題而不是圖標名稱。

例如Chrome瀏覽器圖標是: /usr/share/icons/hicolor/16x16/apps/google-chrome.png

我怎麼能得到這條道路?

回答

0

libwnck的source code表示此功能是不是真的落實,現在(和只返回應用程序,你已經寫了名字):

const char* 
wnck_application_get_icon_name (WnckApplication *app) 
{ 
    g_return_val_if_fail (WNCK_IS_APPLICATION (app), NULL); 

    /* FIXME this isn't actually implemented, should be different 
    * from regular name 
    */ 

    if (app->priv->name) 
    return app->priv->name; 
    else 
    return FALLBACK_NAME; 
} 

而且,看着gtk_window_set_icon_from_filecode我不是甚至可以確定是否有可能得到這條路徑,因爲它不存儲在pixbuf中:

gboolean 
gtk_window_set_icon_from_file (GtkWindow *window, 
        const gchar *filename, 
        GError  **err) 
{ 
    GdkPixbuf *pixbuf = load_pixbuf_verbosely (filename, err); 

    if (pixbuf) 
    { 
     gtk_window_set_icon (window, pixbuf); 
     g_object_unref (pixbuf); 

     return TRUE; 
    } 
    else 
    return FALSE; 
} 
+0

也許有可能使用窗口的pid或xid來找到這條路徑......? – Alexandre

+0

我不認爲這是可能的gtk +。也許像qt這樣的其他GUI框架存儲此路徑。 – elya5