KeePass looks for some resources (XSL files) in the executable directory, however under UNIX system this not a good idea, so we look into the CommonApplicationData SpecialFolder, which usually maps to "/usr/share/". So the final search path should be "/usr/share/KeePass/XSL/". --- a/KeePass/forms/AboutForm.cs +++ b/KeePass/Forms/AboutForm.cs @@ -31,9 +31,11 @@ using KeePass.Resources; using KeePass.UI; using KeePass.Util; +using KeePass.Native; using KeePassLib; using KeePassLib.Utility; +using KeePassLib.Native; namespace KeePass.Forms { @@ -98,8 +100,21 @@ m_lvComponents.Items.Add(lvi); lvi = new ListViewItem(KPRes.XslStylesheetsKdbx); - string strPath = WinUtil.GetExecutable(); - strPath = UrlUtil.GetFileDirectory(strPath, true, false); + + string strPath; + if (NativeLib.IsUnix()) + { + strPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); + strPath = UrlUtil.EnsureTerminatingSeparator(strPath, false); + strPath += PwDefs.ShortProductName.ToLower(); + strPath = UrlUtil.EnsureTerminatingSeparator(strPath, false); + } + else + { + strPath = WinUtil.GetExecutable(); + strPath = UrlUtil.GetFileDirectory(strPath, true, false); + } + strPath += AppDefs.XslFilesDir; strPath = UrlUtil.EnsureTerminatingSeparator(strPath, false); bool bInstalled = File.Exists(strPath + AppDefs.XslFileHtmlFull);