Skip to content

Use XDG standard by default#304

Open
c4llv07e wants to merge 3 commits intopaul-nameless:masterfrom
c4llv07e:master
Open

Use XDG standard by default#304
c4llv07e wants to merge 3 commits intopaul-nameless:masterfrom
c4llv07e:master

Conversation

@c4llv07e
Copy link
Copy Markdown

It would be nice if tg followed XDG base directory specification.

Signed-off-by: c4llv07e <kseandi@gmail.com>
Comment thread tg/config.py Outdated
return os.path.expandvars(os.path.expanduser(path))

CONFIG_DIR = os.path.expanduser("~/.config/tg/")
CONFIG_DIR = expand_path("$XDG_CONFIG_HOME/tg/")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't work if $XDG_CONFIG_HOME isn't set.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not really sure about this solution, but it works both with and without variables.

Signed-off-by: c4llv07e <kseandi@gmail.com>
Comment thread tg/config.py Outdated
Co-authored-by: arza <arza@arza.us>
Comment thread tg/config.py
_linux = "Linux"

def expand_path(path):
return os.path.expandvars(os.path.expanduser(path))
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What’s the purpose of expandvars() here? This seems like it might introduce unexpected behaviour in case any of the paths might have a "$" in them (for whatever reason).

The $XDG_* variables are already "expanded" by os.getenv, so e.g. os.getenv("XDG_CONFIG_HOME", "~/.config") following export XDG_CONFIG_HOME=$HOME/.xdg_config would return /home/user/.xdg_config, not $XDG_CONFIG_HOME/.xdg_config.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you are using default paths, then you're right. But what if someone changes cache folder location to "$XDG_CACHE_HOME/$USER/tg"? Then they couldn't expand it with os.getenv.
If you use the default paths, then you are right. But what if someone changes the location of the cache folder to "$XDG_CACHE_HOME/$USER/tg"? Then they won't be able to expand it with `os.getenv'.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mean change the location inside tg? Or set XDG_CACHE_HOME? If the former, then this PR is introducing a feature to the codebase beyond what it says it’s set out to do and unrelated to the XDG standard. If the latter, then $USER would be expanded by the system and stored in the XDG_CACHE_HOME envvar directly, so there’d be no need to expand it again inside tg.

And again, this may break in the case of a user for some reason or other decided to use a literal $ in their paths and it happens to resolve to a variable in the environment at time of evaluation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants