@@ -39,7 +39,7 @@ namespace linuxdeploy {
3939 deployedDesktopFiles.begin (),
4040 deployedDesktopFiles.end (),
4141 [&firstDeployedDesktopFileName](const desktopfile::DesktopFile& desktopFile) {
42- auto fileName = desktopFile.path (). filename (). string () ;
42+ auto fileName = desktopFile.path ();
4343 return fileName == firstDeployedDesktopFileName;
4444 }
4545 );
@@ -85,4 +85,34 @@ namespace linuxdeploy {
8585 return false ;
8686 }
8787 }
88+
89+ bool addDefaultKeys (DesktopFile& desktopFile, const std::string& executableFileName) {
90+ ldLog () << " Adding default values to desktop file:" << desktopFile.path () << std::endl;
91+
92+ auto rv = true ;
93+
94+ auto setDefault = [&rv, &desktopFile](const std::string& section, const std::string& key, const std::string& value) {
95+ if (desktopFile.entryExists (section, key)) {
96+ DesktopFileEntry entry;
97+
98+ // this should never return false
99+ auto entryExists = desktopFile.getEntry (section, key, entry);
100+ assert (entryExists);
101+
102+ ldLog () << LD_WARNING << " Key exists, not modified:" << key << " (current value:" << entry.value () << LD_NO_SPACE << " )" << std::endl;
103+ rv = false ;
104+ } else {
105+ auto entryOverwritten = desktopFile.setEntry (section, DesktopFileEntry (key, value));
106+ assert (!entryOverwritten);
107+ }
108+ };
109+
110+ setDefault (" Desktop Entry" , " Name" , executableFileName);
111+ setDefault (" Desktop Entry" , " Exec" , executableFileName);
112+ setDefault (" Desktop Entry" , " Icon" , executableFileName);
113+ setDefault (" Desktop Entry" , " Type" , " Application" );
114+ setDefault (" Desktop Entry" , " Categories" , " Utility;" );
115+
116+ return rv;
117+ }
88118}
0 commit comments