import glob import os XDG_DATA_HOME = os.environ.get( "XDG_DATA_HOME", os.path.expanduser("~/.local/share") ) XDG_DATA_DIRS = os.environ.get( "XDG_DATA_DIRS", "/usr/local/share/:/usr/share/" ) XDG_DATA_DIRS = XDG_DATA_DIRS.split(os.pathsep) def main() -> list[str]: files = [] for appdata in (XDG_DATA_HOME, *XDG_DATA_DIRS): shortcuts = os.path.join(appdata, "applications") if not os.path.isdir(shortcuts): continue shortcuts = os.path.join(shortcuts, "**", "*.desktop") files.extend(glob.iglob(shortcuts, recursive=True)) return files if __name__ == "__main__": print(main())