2013-04-23 148 views
0

我的桌面是GNOME,我正在通過Python以編程方式更改其設置。GNOME配置數據庫類型推斷

該數據庫具有簡單的值類型,例如,字符串,整數,字符串列表,整數列表...

一個簡單的CLI工具來操作數據是gconftool-2,它使用--get選項返回鍵的值。

我不知道從這些值推斷類型,考慮到我需要知道設置它回到某個值時的值。注意,在我的模式中,「8」是一個字符串,而8是一個int,但它們都是由gconftool-2輸出爲8。

你會怎麼做呢?

回答

2

而不是調用命令行工具,請嘗試使用包含在GNOME的Python綁定gconf模塊:

>>> import gconf 
>>> client = gconf.Client() 
>>> # Get a value and introspect its type: 
>>> value = client.get('/apps/gnome-terminal/profiles/Default/background_color') 
>>> value.type 
<enum GCONF_VALUE_STRING of type GConfValueType> 
>>> value.get_string() 
'#FFFFFFFFDDDD' 

對於列表,可以反思列表值類型:

>>> value = client.get('/apps/compiz-1/general/screen0/options/active_plugins') 
>>> value.type 
<enum GCONF_VALUE_LIST of type GConfValueType> 
>>> value.get_list_type() 
<enum GCONF_VALUE_STRING of type GConfValueType> 
>>> value.get_list() 
(<GConfValue at 0x159aa80>, <GConfValue at 0x159aaa0>, ...) 

在一般來說,您應該知道您正在操作的鍵的類型,並直接使用適當的類型特定訪問方法(例如Client.get_stringClient.set_string)。

+0

這聽起來像是一個更好,更清晰,更健壯/明智/乾淨的方法,用於我的gconf Python腳本。如果它能夠修復我的問題,請使用整數列表,字符串列表.. – Robottinosino 2013-04-23 05:25:02

+0

字符串列表給我這個:,我不知道如何辨別整數列表等。例如:(如你使用gnome-terminal ..)global/active_encodings – Robottinosino 2013-04-23 05:30:39

+0

枚舉值是作爲全局變量提供的'gconf'模塊。所以你可以做'如果value.type == gconf.VALUE_STRING':...' – 2013-04-23 07:28:05