Make it easier to set calibre environment variables on macOS

This commit is contained in:
Kovid Goyal 2020-01-02 09:52:25 +05:30
parent dcc5757a24
commit ff4316bc93
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 33 additions and 3 deletions

View File

@ -121,12 +121,36 @@ def run_entry_point():
return getattr(pmod, func)() return getattr(pmod, func)()
def read_user_env_vars():
try:
with open(os.path.expanduser('~/Library/Preferences/calibre/macos-env.txt'), 'rb') as f:
raw = f.read().decode('utf-8', 'replace')
except EnvironmentError as err:
return
for line in raw.splitlines():
if line.startswith('#'):
continue
parts = line.split('=', 1)
if len(parts) == 2:
key, val = parts
os.environ[key] = os.path.expandvars(os.path.expanduser(val))
def add_calibre_vars(base): def add_calibre_vars(base):
sys.frameworks_dir = os.path.join(os.path.dirname(base), 'Frameworks') sys.frameworks_dir = os.path.join(os.path.dirname(base), 'Frameworks')
sys.resources_location = os.path.abspath(os.path.join(base, 'resources')) sys.resources_location = os.path.abspath(os.path.join(base, 'resources'))
sys.extensions_location = os.path.join(sys.frameworks_dir, 'plugins') sys.extensions_location = os.path.join(sys.frameworks_dir, 'plugins')
sys.binaries_path = os.path.join(os.path.dirname(base), 'MacOS') sys.binaries_path = os.path.join(os.path.dirname(base), 'MacOS')
try:
read_user_env_vars()
except Exception as err:
try:
sys.stderr.write('Failed to read user env vars with error: {}\n'.format(err))
sys.stderr.flush()
except Exception:
pass
dv = os.environ.get('CALIBRE_DEVELOP_FROM', None) dv = os.environ.get('CALIBRE_DEVELOP_FROM', None)
if dv and os.path.exists(dv): if dv and os.path.exists(dv):
sys.path.insert(0, os.path.abspath(dv)) sys.path.insert(0, os.path.abspath(dv))

View File

@ -43,10 +43,16 @@ Environment variables
* ``CALIBRE_USE_DARK_PALETTE`` - Set it to ``1`` to have calibre use dark colors and ``0`` for normal colors (ignored on macOS). * ``CALIBRE_USE_DARK_PALETTE`` - Set it to ``1`` to have calibre use dark colors and ``0`` for normal colors (ignored on macOS).
On Windows 10 in the absence of this variable, the windows system preference for dark colors is used. On Windows 10 in the absence of this variable, the windows system preference for dark colors is used.
* ``SYSFS_PATH`` - Use if sysfs is mounted somewhere other than /sys * ``SYSFS_PATH`` - Use if sysfs is mounted somewhere other than /sys
* ``http_proxy``, ``https_proxy`` - Used on linux to specify an HTTP(S) proxy * ``http_proxy``, ``https_proxy`` - Used on Linux to specify an HTTP(S) proxy
See `How to set environment variables in Windows <https://www.computerhope.com/issues/ch000549.htm>`_. If you are on macOS
you can set environment variables by creating the :file:`~/Library/Preferences/calibre/macos-env.txt` and putting
the environment variables one per line in it, for example::
CALIBRE_DEVELOP_FROM=$HOME/calibre-src/src
CALIBRE_NO_NATIVE_FILEDIALOGS=1
CALIBRE_CONFIG_DIRECTORY=~/.config/calibre
See `How to set environment variables in Windows <https://www.computerhope.com/issues/ch000549.htm>`_ or
`How to set environment variables in macOS <https://www.dowdandassociates.com/blog/content/howto-set-an-environment-variable-in-mac-os-x-launchd-plist/>`_.
Tweaks Tweaks
------------ ------------