texturev: Fixed mime type assocation on Linux.

This commit is contained in:
Бранимир Караџић
2023-12-08 23:27:43 -08:00
parent db40a04a08
commit ad625918eb

View File

@@ -1222,34 +1222,60 @@ void associate()
} }
} }
#elif BX_PLATFORM_LINUX #elif BX_PLATFORM_LINUX
std::string str;
str += "#/bin/bash\n\n"; std::string mimeType;
auto associate = [&mimeType](const char* _ext)
{
std::string tmp;
bx::stringPrintf(tmp, "default texturev.desktop image/%s", _ext);
bx::ProcessReader reader;
bx::Error err;
if (bx::open(&reader, "xdg-mime", tmp.c_str(), &err) )
{
bx::close(&reader);
}
else
{
bx::printf("Failed to associate MIME type image/%s (error: \"%S\")!\n", _ext, &err.getMessage() );
}
bx::stringPrintf(mimeType, "image/%s;", _ext);
};
for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii) for (uint32_t ii = 0; ii < BX_COUNTOF(s_supportedExt); ++ii)
{ {
const char* ext = s_supportedExt[ii]; associate(s_supportedExt[ii]);
bx::stringPrintf(str, "xdg-mime default texturev.desktop image/%s\n", ext);
} }
bx::stringPrintf(str, "xdg-mime default texturev.desktop image/x-dds\n"); associate("x-dds");
str += "\n";
bx::FileWriter writer; bx::FileWriter writer;
bx::Error err; bx::Error err;
if (bx::open(&writer, "/tmp/texturev.sh", false, &err) ) if (bx::open(&writer, "/usr/share/applications/texturev.desktop", false, &err) )
{ {
bx::write(&writer, str.c_str(), uint32_t(str.length()), &err); bx::write(&writer, &err
, "[Desktop Entry]\n"
"Version=%d.%d.%d\n"
"Type=Application\n"
"Name=texturev\n"
"GenericName=bgfx Image/Texture Viewer\n"
"Exec=texturev %%U\n"
"Terminal=false\n"
"Categories=Graphics\n"
"StartupNotify=true\n"
"MimeType=%s\n"
, BGFX_TEXTUREV_VERSION_MAJOR
, BGFX_TEXTUREV_VERSION_MINOR
, BGFX_API_VERSION
, mimeType.c_str()
);
bx::close(&writer); bx::close(&writer);
}
if (err.isOk() ) else
{ {
bx::ProcessReader reader; bx::printf("Failed to create texturev desktop entry (error: \"%S\")! Permissions (try sudo)?!\n", &err.getMessage() );
if (bx::open(&reader, "/bin/bash", "/tmp/texturev.sh", &err) )
{
bx::close(&reader);
}
}
} }
#endif // BX_PLATFORM_WINDOWS #endif // BX_PLATFORM_WINDOWS
} }