Tuesday, April 23, 2024
 Popular · Latest · Hot · Upcoming
4
rated 0 times [  4] [ 0]  / answers: 1 / hits: 2968  / 12 Months ago, tue, may 30, 2023, 4:03:15

I have set up puppet (Central Management Server). Can anyone tell me how to change wallpapers of all clients from this puppet server?


More From » puppet

 Answers
3

To set the wallpaper image from command line (without puppet), you can use something like this:



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


which obviously needs to be run as the user you're changing the background for.



In terms of puppet, I believe you would be able to upload the file to the controlled machines using file resource:



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


then, to run a command, there's exec directive:



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",
}
}


which you can execute for each of your users:



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" }


Also, you may want to restrict user's choice of backgrounds only to the one you're setting with Puppet. For that, you need to modify /usr/share/gnome-background-properties/ubuntu-wallpapers.xml (obviously, using Puppet). The file itself would look like:



<?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>


The rule to upload it would look like:



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


Also, note that the default Ubuntu background is in the file /usr/share/backgrounds/warty-final-ubuntu.png - I'm finding that replacing this file gives more predictable results then creating another one (i.e. gsettings is unable to change background for new users who never logged in, for example). This also changes the background of the login screen etc, which I suppose is a good thing.


[#43179] Wednesday, May 31, 2023, 12 Months  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
olltea

Total Points: 238
Total Questions: 115
Total Answers: 107

Location: Moldova
Member since Tue, Feb 7, 2023
1 Year ago
;