mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-08-01 19:18:28 -04:00
dms doctor: detect missing XDG_MENU_PREFIX when KDE apps are installed (#2840)
* dms doctor: warn when XDG_MENU_PREFIX is missing with KDE apps Under non-Plasma compositors (niri, Hyprland, Sway), Dolphin's 'Open with...' dialog appears empty because KService/KApplicationTrader requires a populated XDG menu tree, which depends on XDG_MENU_PREFIX. This check warns the user when kde-cli-tools (keditfiletype) is installed but XDG_MENU_PREFIX is not set. Ref: https://specifications.freedesktop.org/menu-spec/latest/ * fix(dms doctor): improve warning message for missing XDG_MENU_PREFIX Port 1.5 --------- Co-authored-by: Matias <git@matias7235.com.ar>
This commit is contained in:
@@ -320,6 +320,7 @@ func checkEnvironmentVars() []checkResult {
|
|||||||
var results []checkResult
|
var results []checkResult
|
||||||
results = append(results, checkEnvVar("QT_QPA_PLATFORMTHEME")...)
|
results = append(results, checkEnvVar("QT_QPA_PLATFORMTHEME")...)
|
||||||
results = append(results, checkEnvVar("QS_ICON_THEME")...)
|
results = append(results, checkEnvVar("QS_ICON_THEME")...)
|
||||||
|
results = append(results, checkXDGMenuPrefix()...)
|
||||||
return results
|
return results
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -334,6 +335,29 @@ func checkEnvVar(name string) []checkResult {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkXDGMenuPrefix() []checkResult {
|
||||||
|
menuPrefix := os.Getenv("XDG_MENU_PREFIX")
|
||||||
|
if menuPrefix != "" {
|
||||||
|
if checkXDGMenuFile(menuPrefix) {
|
||||||
|
return []checkResult{{catEnvironment, "XDG_MENU_PREFIX", statusInfo, menuPrefix, "", doctorDocsURL + "#xdg-menu-prefix"}}
|
||||||
|
}
|
||||||
|
return []checkResult{{catEnvironment, "XDG_MENU_PREFIX", statusWarn, fmt.Sprintf("%s (menu file not found)", menuPrefix), fmt.Sprintf("Dolphin 'Open with…' dialog may be empty. Ensure /etc/xdg/menus/%sapplications.menu exists.", menuPrefix), doctorDocsURL + "#xdg-menu-prefix"}}
|
||||||
|
}
|
||||||
|
if _, err := exec.LookPath("keditfiletype"); err == nil {
|
||||||
|
return []checkResult{{catEnvironment, "XDG_MENU_PREFIX", statusWarn, "Not set", "Dolphin file associations and 'Open with…' dialog may be empty. Set XDG_MENU_PREFIX=plasma- in your compositor's environment block.", doctorDocsURL + "#xdg-menu-prefix"}}
|
||||||
|
}
|
||||||
|
if doctorVerbose {
|
||||||
|
return []checkResult{{catEnvironment, "XDG_MENU_PREFIX", statusInfo, "Not set", "", doctorDocsURL + "#xdg-menu-prefix"}}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkXDGMenuFile(prefix string) bool {
|
||||||
|
menuPath := fmt.Sprintf("/etc/xdg/menus/%sapplications.menu", prefix)
|
||||||
|
_, err := os.Stat(menuPath)
|
||||||
|
return err == nil
|
||||||
|
}
|
||||||
|
|
||||||
func readOSRelease() map[string]string {
|
func readOSRelease() map[string]string {
|
||||||
result := make(map[string]string)
|
result := make(map[string]string)
|
||||||
data, err := os.ReadFile("/etc/os-release")
|
data, err := os.ReadFile("/etc/os-release")
|
||||||
|
|||||||
Reference in New Issue
Block a user