mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-11-15 07:04:31 +03:00
When using the include directive in kitty.conf make the environment variable KITTY_OS available for OS specific config
This commit is contained in:
parent
fda4aa21a1
commit
d7d96c2e7b
@ -61,6 +61,7 @@ Detailed list of changes
|
||||
|
||||
- When drawing the tab bar have the default left and right margins drawn in a color matching the neighboring tab (:iss:`5719`)
|
||||
|
||||
- When using the :code:`include` directive in :file:`kitty.conf` make the environment variable :envvar:`KITTY_OS` available for OS specific config.
|
||||
|
||||
0.26.5 [2022-11-07]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -31,7 +31,9 @@ You can include secondary config files via the :code:`include` directive. If
|
||||
you use a relative path for :code:`include`, it is resolved with respect to the
|
||||
location of the current config file. Note that environment variables are
|
||||
expanded, so :code:`${USER}.conf` becomes :file:`name.conf` if
|
||||
:code:`USER=name`. Also, you can use :code:`globinclude` to include files
|
||||
:code:`USER=name`. A special environment variable :envvar:`KITTY_OS` is available,
|
||||
to detect the operating system. It is ``linux``, ``macos`` or ``bsd``.
|
||||
Also, you can use :code:`globinclude` to include files
|
||||
matching a shell glob pattern and :code:`envinclude` to include configuration
|
||||
from environment variables. For example::
|
||||
|
||||
|
@ -212,3 +212,8 @@ Variables that kitty sets when running child programs
|
||||
|
||||
Set when enabling :ref:`shell_integration` with :program:`bash`, allowing
|
||||
:program:`bash` to automatically load the integration script.
|
||||
|
||||
.. envvar:: KITTY_OS
|
||||
|
||||
Set when using the include directive in kitty.conf. Can take values:
|
||||
``linux``, ``macos``, ``darwin``.
|
||||
|
@ -7,13 +7,14 @@ import shlex
|
||||
import sys
|
||||
from contextlib import contextmanager
|
||||
from typing import (
|
||||
Any, Callable, Dict, Generator, Generic, Iterable, Iterator, List,
|
||||
NamedTuple, Optional, Sequence, Set, Tuple, TypeVar, Union
|
||||
Any, Callable, Dict, Generator, Generic, Iterable, Iterator, List, NamedTuple,
|
||||
Optional, Sequence, Set, Tuple, TypeVar, Union,
|
||||
)
|
||||
|
||||
from ..constants import _plat, is_macos
|
||||
from ..fast_data_types import Color
|
||||
from ..rgb import to_color as as_color
|
||||
from ..types import ConvertibleToNumbers, ParsedShortcut
|
||||
from ..types import ConvertibleToNumbers, ParsedShortcut, run_once
|
||||
from ..typing import Protocol
|
||||
from ..utils import expandvars, log_error
|
||||
|
||||
@ -159,6 +160,17 @@ class CurrentlyParsing:
|
||||
currently_parsing = CurrentlyParsing()
|
||||
|
||||
|
||||
@run_once
|
||||
def os_name() -> str:
|
||||
if is_macos:
|
||||
return 'macos'
|
||||
if 'bsd' in _plat:
|
||||
return 'bsd'
|
||||
if 'linux' in _plat:
|
||||
return 'linux'
|
||||
return 'unknown'
|
||||
|
||||
|
||||
class NamedLineIterator:
|
||||
|
||||
def __init__(self, name: str, lines: Iterator[str]):
|
||||
@ -185,7 +197,7 @@ def parse_line(
|
||||
return
|
||||
key, val = m.groups()
|
||||
if key in ('include', 'globinclude', 'envinclude'):
|
||||
val = os.path.expandvars(os.path.expanduser(val.strip()))
|
||||
val = expandvars(os.path.expanduser(val.strip()), {'KITTY_OS': os_name()})
|
||||
if key == 'globinclude':
|
||||
from pathlib import Path
|
||||
vals = tuple(map(lambda x: str(os.fspath(x)), sorted(Path(base_path_for_includes).glob(val))))
|
||||
|
Loading…
Reference in New Issue
Block a user