Theresa Arzadon-Labajo

Editing desktop files with augeas and puppet

Posted by Theresa Arzadon-Labajo (tarzadon) on Feb 05 2015
Tech Stuff >> Unix-Linux

I needed to edit a custom desktop file that had a typo in it on all my workstations. I used Augeas to edit the file and Puppet to automate it for me.

My file was /usr/share/applications/mathematica-10.0.desktop. The Icon line was wrong and I didn't want to wait for recompiling the RPM package and adding it to my repo and then run yum update on all my machines.

I figured I could use augeas and puppet to make the changes.

First, I needed to know if there was an existing lens in augeas. It is in /usr/share/augeas/lenses/dist/desktop.aug. The module name is called Desktop. To reference the module, you would use Desktop.lns.

I first tried it using the command line augtool to make sure it worked.

# augtool 
augtool> set /augeas/load/desktop/lens "Desktop.lns" 
augtool> set /augeas/load/desktop/incl "/usr/share/applications/mathematica-10.0.desktop
augtool> load
augtool> print "/files/usr/share/applications/mathematica-10.0.desktop/Desktop Entry/Categories"
/files/usr/share/applications/mathematica-10.0.desktop/Desktop Entry/Categories
= "Application;Mathematics" 
augtool> set "/files/usr/share/applications/mathematica-10.0.desktop/Desktop Entry/Categories" "Application;X-Red-Hat-Base;Mathematics" 
augtool> print "/files/usr/share/applications/mathematica-10.0.desktop/Desktop Entry/Categories"
/files/usr/share/applications/mathematica-10.0.desktop/Desktop Entry/Categories
= "Application;X-Red-Hat-Base;Mathematics" 
augtool> save 
Saved 1 file(s)
Once, I verified this worked, I added it to a puppet manifest file:
augeas{"mathematica-desktop": 
     lens => "Desktop.lns", 
     incl => "/usr/share/applications/mathematica-10.0.desktop", 
     context => "/files/usr/share/applications/mathematica-10.0.desktop/Desktop Entry", 
     changes => [ 'set Icon "/usr/share/icons/wolfram-mathematica"', 
                        'set Categories "Application;X-Red-Hat-Base;Mathematics"', 
     ] 
}
Resources: http://projects.puppetlabs.com/projects/1/wiki/puppet_augeas

Last changed: Feb 27 2020 at 3:31 PM

Back