You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

101 lines
3.0 KiB

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
**Project Name:** MakeHuman
**Product Home Page:** http://www.makehumancommunity.org/
**Code Home Page:** https://github.com/makehumancommunity/makehuman
**Authors:** Aranuvir
**Copyright(c):** MakeHuman Team 2001-2020
**Licensing:** AGPL3
This file is part of MakeHuman (www.makehumancommunity.org).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Abstract
--------
This module provides the "well known" user directories from a Linux Desktop. Common
directories are 'DESKTOP', 'DOCUMENTS', 'DOWNLOAD', 'MUSIC', 'PICTURES', '
PUBLICSHARE', 'TEMPLATES' and 'VIDEOS'. The predefined directories and their
paths are stored in the dictionary XDG_PATHS, which will be None on platforms other
than Linux."""
import os
import sys
isLinux = sys.platform.startswith("linux")
if isLinux:
# Default path to xdg configuration file
CONFIG_PATH = os.path.expanduser("~/.config/user-dirs.dirs")
def get_userdirs(path=CONFIG_PATH):
"""This function parses a configuration file to retrieve user directories and their configured paths.
Environment variables are replaced by their values"""
dirs = dict()
if os.path.isfile(path):
with open(path, "r", encoding="utf-8") as file:
for line in file:
if line and line.startswith("XDG_"):
line = line.strip()
key, value = line.split("=")
key = key.split("_")[1]
value = os.path.expandvars(value.strip('"'))
if os.path.isdir(value):
dirs[key] = value
return dirs
else:
def get_userdirs(path=""):
"""Dummy function for use on other Platform than Linux"""
return {}
XDG_PATHS = get_userdirs()
if XDG_PATHS:
XDG_DIRS = sorted(XDG_PATHS.keys())
else:
XDG_DIRS = []
# Main Function #############################################################
if __name__ == "__main__":
if isLinux and XDG_DIRS:
print("Found XDG_DIRS:", ", ".join(XDG_DIRS), "\n")
max_len = max([len(d) for d in XDG_DIRS])
f_str = "{0:" + str(max_len) + "s} ---> {1}"
for d in XDG_DIRS:
print(f_str.format(d, XDG_PATHS.get(d)))
else:
print("This module should be used on Linux platforms only!")