为什么Gio.Settings不影响

时间:2018-08-24 22:24:31

标签: python

我想使用Python设置用户环境。 但是我不明白为什么这段代码不起作用?

环境:

Ubuntu 18.04.1
Python 2.7.15rc1
python-gi 3.26.1-2
libgtk-3-0:3.22.30-1ubu

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk,Gio

gsettings = Gio.Settings.new('org.gnome.shell.extensions.dash-to-dock')
gsettings.set_int('dash-max-icon-size', 16)
gsettings.apply()

并执行sudo python /home/username/Documents/setup.py之类的代码。

2 个答案:

答案 0 :(得分:1)

正如您所说,您的目标是设置 您的用户环境。当您使用sudo command运行代码时,您是以 superuser 身份运行它的,因此实际上是在更改 root '的环境!

关于不需要.apply()的原因:当像您一样使用Gio.Settings.new()实例化设置时,将立即应用。来自official documentation on .apply()

应用对设置进行的所有更改。除非self处于“延迟应用”模式,否则此功能不会执行任何操作;请参阅Gio.Settings.delay()。通常情况下,总是立即应用设置

答案 1 :(得分:0)

当我从命令行中删除sudo时,此代码开始工作。因此,我像运行python /home/username/Documents/setup.py一样运行此代码,现在可以正常工作了!但是为什么呢?

...并且代码在没有gsettings.apply()的情况下有效,因此我注释了这一行