有没有办法通过 bash(或其他带有 bash 或 python 的库)访问要编辑的变量?类似于如何在 bash 中使用“gconftool-2”编辑属性,并在编辑后更新它们。
例如,我想运行一个脚本来通过终端(bash 或 python)禁用“文件管理器处理桌面”,而不是每次都打开此窗口。
我也尝试过在 gconf-editor 中的 nautilus 中将“show_desktop”设为 false,但这没有任何作用。
我正在使用 Ubuntu 11.10 和 compiz 作为 Gnome 上的窗口管理器(我相信是 2,或者 11.10 自带的任何版本)。
答案1
我们将使用 Gio 来获取基本键(值所在的类别)。获取该值后,我们将在其上设置一个 CheckBox 来更改该值。然后,我们设置各种信号来监听设置和 CheckBox 中的更改。我知道它不是桌面版,但您可以将其插入 BASE_KEY。顺便说一句,您不应该尝试在 GNOME 3 中使用 GConf,因为它已被弃用。
from gi.repository import Gio, Gtk
class GSettingsTest(object):
BASE_KEY = "org.gnome.nautilus.preferences"
def __init__(self):
# Make a check button to change the value.
settings = Gio.Settings(self.BASE_KEY)
change_check = Gtk.CheckButton("Always Use Browser")
change_check.set_active (settings.get_boolean("always-use-browser"))
settings.connect("changed::always-use-browser", self.on_changed, change_check)
change_check.connect('toggled', self.on_check_clicked, settings)
window = Gtk.Window(type = Gtk.WindowType.TOPLEVEL)
window.set_title("Change Nautilus")
window.set_border_width(24)
window.connect("delete-event", Gtk.main_quit)
window.add(change_check)
window.show_all()
Gtk.main()
def on_changed(self, settings, key, change_check):
change_check.set_active(settings.get_boolean("always-use-browser"))
def on_check_clicked(self, button, settings):
settings.set_boolean("always-use-browser", button.get_active())
if __name__ == '__main__':
app = GSettingsTest()