Как изменить обои всех клиентов с помощью марионетки?

На первом этапе вашего приложения (на самом деле следующий) добавлена ​​ссылка на учебное приложение для телефона, которое следует этим шагам:

В Qt Creator нажмите Ctrl + N, чтобы создать новый (здесь вы здесь) Выберите «Проекты»> «Ubuntu»> «Шаблон пользовательского интерфейса Simple Touch» и нажмите «Выбрать ...» (я предполагаю, что «Ubuntu» прокручивается по списку). Дайте проекту CurrencyConverter как имя. Вы можете оставить поле Создать в: по умолчанию и затем нажать «Далее». На последнем этапе вы можете настроить систему контроля версий, такую ​​как Bazaar, но это выходит за рамки данного руководства. Нажмите «Готово». Замените компонент Column и все его дочерние элементы и замените их страницей, как показано ниже, а затем сохраните ее с помощью Ctrl + S: (здесь есть куча кода, что не важно для решения проблемы)
4
задан 21 October 2011 в 11:33

5 ответов

Чтобы установить изображение обоев из командной строки (без марионетки), вы можете использовать что-то вроде этого:

gsettings set org.gnome.desktop.background picture-uri "file:///path/to/file.jpg"

, который, очевидно, нужно запускать как пользователь, для которого вы меняете фон.

С точки зрения марионетки, я считаю, что вы сможете загрузить файл на контролируемые машины с помощью ресурса file:

file { "/usr/share/backgrounds/warty-final-ubuntu.png":
   source => "puppet://server/modules/module_name/background.jpg" 
}

, затем, чтобы запустить команду, есть exec:

define set_bg($name) {
    exec {"set bg for $name":
        command => "/usr/bin/gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/warty-final-ubuntu.png",
        user => "$name",
    }
}

, которую вы можете выполнить для каждого из ваших пользователей:

user { "joe":
  ensure      =>  "present",
  uid         =>  "1005",
  comment     =>  "Joe",
  home        =>  "/home/joe",
  shell       =>  "/bin/bash",
  managehome  =>  "true"
} 

user { "ted":
  ensure      =>  "present", 
  uid         =>  "1006", 
  comment     =>  "Ted",
  home        =>  "/home/ted",
  shell       =>  "/bin/bash",
  managehome  =>  "true"
} 

set_bg { "joe": name=>"joe" }
set_bg { "ted": name=>"ted" }

Кроме того, вы можете ограничить выбор пользователем фона только одним вы устанавливаете с помощью Puppet. Для этого вам нужно изменить /usr/share/gnome-background-properties/ubuntu-wallpapers.xml (очевидно, используя Puppet). Сам файл будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
   <wallpaper>
    <name>Common Background</name>
    <filename>/usr/share/backgrounds/warty-final-ubuntu.png</filename>
    <options>zoom</options>
    <pcolor>#000000</pcolor>
    <scolor>#000000</scolor>
    <shade_type>solid</shade_type>
   </wallpaper>
</wallpapers>

Правило для его загрузки будет выглядеть так:

file { "/usr/share/gnome-background-properties/ubuntu-wallpapers.xml":
   source => "puppet://server/modules/module_name/backgrounds.xml",
}

Также обратите внимание, что фон Ubuntu по умолчанию находится в файле /usr/share/backgrounds/warty-final-ubuntu.png - Я обнаружил, что замена этого файла дает более предсказуемые результаты, а затем создает другой (т. Е. Gsettings не может изменить фон для новых пользователей, которые никогда не вошли в систему, например). Это также изменяет фон экрана входа в систему и т. Д., Который, я полагаю, хорош.

4
ответ дан 25 May 2018 в 18:24

Чтобы установить изображение обоев из командной строки (без марионетки), вы можете использовать что-то вроде этого:

gsettings set org.gnome.desktop.background picture-uri "file:///path/to/file.jpg"

, который, очевидно, нужно запускать как пользователь, для которого вы меняете фон.

С точки зрения марионетки, я считаю, что вы сможете загрузить файл на контролируемые машины с помощью ресурса file:

file { "/usr/share/backgrounds/warty-final-ubuntu.png":
   source => "puppet://server/modules/module_name/background.jpg" 
}

, затем, чтобы запустить команду, есть exec:

define set_bg($name) {
    exec {"set bg for $name":
        command => "/usr/bin/gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/warty-final-ubuntu.png",
        user => "$name",
    }
}

, которую вы можете выполнить для каждого из ваших пользователей:

user { "joe":
  ensure      =>  "present",
  uid         =>  "1005",
  comment     =>  "Joe",
  home        =>  "/home/joe",
  shell       =>  "/bin/bash",
  managehome  =>  "true"
} 

user { "ted":
  ensure      =>  "present", 
  uid         =>  "1006", 
  comment     =>  "Ted",
  home        =>  "/home/ted",
  shell       =>  "/bin/bash",
  managehome  =>  "true"
} 

set_bg { "joe": name=>"joe" }
set_bg { "ted": name=>"ted" }

Кроме того, вы можете ограничить выбор пользователем фона только одним вы устанавливаете с помощью Puppet. Для этого вам нужно изменить /usr/share/gnome-background-properties/ubuntu-wallpapers.xml (очевидно, используя Puppet). Сам файл будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
   <wallpaper>
    <name>Common Background</name>
    <filename>/usr/share/backgrounds/warty-final-ubuntu.png</filename>
    <options>zoom</options>
    <pcolor>#000000</pcolor>
    <scolor>#000000</scolor>
    <shade_type>solid</shade_type>
   </wallpaper>
</wallpapers>

Правило для его загрузки будет выглядеть так:

file { "/usr/share/gnome-background-properties/ubuntu-wallpapers.xml":
   source => "puppet://server/modules/module_name/backgrounds.xml",
}

Также обратите внимание, что фон Ubuntu по умолчанию находится в файле /usr/share/backgrounds/warty-final-ubuntu.png - Я обнаружил, что замена этого файла дает более предсказуемые результаты, а затем создает другой (т. Е. Gsettings не может изменить фон для новых пользователей, которые никогда не вошли в систему, например). Это также изменяет фон экрана входа в систему и т. Д., Который, я полагаю, хорош.

4
ответ дан 25 July 2018 в 21:14

Чтобы установить изображение обоев из командной строки (без марионетки), вы можете использовать что-то вроде этого:

gsettings set org.gnome.desktop.background picture-uri "file:///path/to/file.jpg"

, который, очевидно, нужно запускать как пользователь, для которого вы меняете фон.

С точки зрения марионетки, я считаю, что вы сможете загрузить файл на контролируемые машины с помощью ресурса file:

file { "/usr/share/backgrounds/warty-final-ubuntu.png":
   source => "puppet://server/modules/module_name/background.jpg" 
}

, затем, чтобы запустить команду, есть exec:

define set_bg($name) {
    exec {"set bg for $name":
        command => "/usr/bin/gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/warty-final-ubuntu.png",
        user => "$name",
    }
}

, которую вы можете выполнить для каждого из ваших пользователей:

user { "joe":
  ensure      =>  "present",
  uid         =>  "1005",
  comment     =>  "Joe",
  home        =>  "/home/joe",
  shell       =>  "/bin/bash",
  managehome  =>  "true"
} 

user { "ted":
  ensure      =>  "present", 
  uid         =>  "1006", 
  comment     =>  "Ted",
  home        =>  "/home/ted",
  shell       =>  "/bin/bash",
  managehome  =>  "true"
} 

set_bg { "joe": name=>"joe" }
set_bg { "ted": name=>"ted" }

Кроме того, вы можете ограничить выбор пользователем фона только одним вы устанавливаете с помощью Puppet. Для этого вам нужно изменить /usr/share/gnome-background-properties/ubuntu-wallpapers.xml (очевидно, используя Puppet). Сам файл будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
   <wallpaper>
    <name>Common Background</name>
    <filename>/usr/share/backgrounds/warty-final-ubuntu.png</filename>
    <options>zoom</options>
    <pcolor>#000000</pcolor>
    <scolor>#000000</scolor>
    <shade_type>solid</shade_type>
   </wallpaper>
</wallpapers>

Правило для его загрузки будет выглядеть так:

file { "/usr/share/gnome-background-properties/ubuntu-wallpapers.xml":
   source => "puppet://server/modules/module_name/backgrounds.xml",
}

Также обратите внимание, что фон Ubuntu по умолчанию находится в файле /usr/share/backgrounds/warty-final-ubuntu.png - Я обнаружил, что замена этого файла дает более предсказуемые результаты, а затем создает другой (т. Е. Gsettings не может изменить фон для новых пользователей, которые никогда не вошли в систему, например). Это также изменяет фон экрана входа в систему и т. Д., Который, я полагаю, хорош.

4
ответ дан 4 August 2018 в 18:42

On Oneiric:

Настройки обоев были перенесены в dconf; все настройки должны быть изменены с помощью вызовов D-Bus.

Поэтому для достижения этой цели с марионеткой вам понадобится марионетный модуль D-Bus и использовать его для отправки вызовов, как описано ниже.

Вы можете собрать информацию о том, какие вызовы D-Bus использовать, используя приложение dbus-monitor, чтобы наблюдать, что происходит при смене обоев.

См. также кукольный модуль D-Bus для подробной информации о том, как настроить доступные по умолчанию обои.


method call sender=:1.2153 -> dest=ca.desrt.dconf serial=44 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=WriteMany
   string "/org/gnome/desktop/background/"
   array [
      struct {
         string "color-shading-type"
         array [
            variant                string "solid"
         ]
      }
      struct {
         string "picture-options"
         array [
            variant                string "zoom"
         ]
      }
      struct {
         string "picture-uri"
         array [
            variant                string "file:///usr/share/themes/Adwaita/backgrounds/stripes.jpg"
         ]
      }
      struct {
         string "primary-color"
         array [
            variant                string "#3465a4"
         ]
      }
   ]
method call sender=:1.2153 -> dest=ca.desrt.dconf serial=45 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=WriteMany
   string "/org/gnome/desktop/background/"
   array [
      struct {
         string "picture-options"
         array [
            variant                string "zoom"
         ]
      }
   ]
2
ответ дан 25 May 2018 в 18:24
  • 1
    Я просто начинаю использовать марионетку. Так что вы могли бы просто разработать свой ответ для достижения ожидаемого результата. Как файл, который я должен редактировать и т. Д. И т. Д. – karthick87 16 October 2011 в 11:12

On Oneiric:

Настройки обоев были перенесены в dconf; все настройки должны быть изменены с помощью вызовов D-Bus.

Поэтому для достижения этой цели с марионеткой вам понадобится кукольный модуль D-Bus и использовать его для отправки вызовов как описанный ниже.

Вы можете собрать информацию о том, какие вызовы D-Bus использовать, используя приложение dbus-monitor, чтобы наблюдать, что происходит при смене обоев.

См. также Как изменить фоновое изображение по умолчанию по умолчанию, чтобы узнать, как настроить доступные по умолчанию обои.


method call sender=:1.2153 -> dest=ca.desrt.dconf serial=44 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=WriteMany
   string "/org/gnome/desktop/background/"
   array [
      struct {
         string "color-shading-type"
         array [
            variant                string "solid"
         ]
      }
      struct {
         string "picture-options"
         array [
            variant                string "zoom"
         ]
      }
      struct {
         string "picture-uri"
         array [
            variant                string "file:///usr/share/themes/Adwaita/backgrounds/stripes.jpg"
         ]
      }
      struct {
         string "primary-color"
         array [
            variant                string "#3465a4"
         ]
      }
   ]
method call sender=:1.2153 -> dest=ca.desrt.dconf serial=45 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=WriteMany
   string "/org/gnome/desktop/background/"
   array [
      struct {
         string "picture-options"
         array [
            variant                string "zoom"
         ]
      }
   ]
2
ответ дан 2 August 2018 в 02:53

Другие вопросы по тегам:

Похожие вопросы: