mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
slave: don't skip setting environment variables when using a custom environment
When launching footclient with -E,--client-environment the environment variables that should be set by foot, wasn't. Those variables are: * TERM * COLORTERM * PWD * SHELL and all variables defined by the user in the [environment] section in foot.ini. In the same way, we did not *unset* TERM_PROGRAM and TERM_PROGRAM_VERSION. This patch fixes it by "cloning" the custom environment, making it mutable, and then adding/removing the variables above from it. Instead of calling setenv()/unsetenv() directly, we add the wrapper functions add_to_env() and del_from_env(). When *not* using a custom environment, they simply call setenv()/unsetenv(). When we *are* using a custom environment, add_to_env() first loops all existing variables, looking for a match. If a match is found, it's updated with the new value. If it's not found, a new entry is added. del_from_env() loops all entries, and removes it when a match is found. If no match is found, nothing is done. The mutable environment is allocated on the heap, but never free:d. We don't need to free it, since it's only allocated after forking, in the child process. Closes #1568
This commit is contained in:
parent
208008d717
commit
9da7152f83
8 changed files with 141 additions and 18 deletions
|
|
@ -73,6 +73,11 @@ terminal has terminated.
|
|||
The child process in the new terminal instance will use
|
||||
footclient's environment, instead of the server's.
|
||||
|
||||
Environment variables listed in the *Variables set in the child
|
||||
process* section will be overwritten by the foot server. For
|
||||
example, the new terminal will use *TERM* from the configuration,
|
||||
not footclient's environment.
|
||||
|
||||
*-d*,*--log-level*={*info*,*warning*,*error*,*none*}
|
||||
Log level, used both for log output on stderr as well as
|
||||
syslog. Default: _warning_.
|
||||
|
|
@ -163,9 +168,27 @@ fallback to the less specific path, with the following priority:
|
|||
This variable is set to *truecolor*, to indicate to client
|
||||
applications that 24-bit RGB colors are supported.
|
||||
|
||||
*PWD*
|
||||
Current working directory (at the time of launching foot)
|
||||
|
||||
*SHELL*
|
||||
Set to the launched shell, if the shell is valid (it is listed in
|
||||
*/etc/shells*).
|
||||
|
||||
In addition to the variables listed above, custom environment
|
||||
variables may be defined in *foot.ini*(5).
|
||||
|
||||
## Variables *unset* in the child process
|
||||
|
||||
*TERM_PROGRAM*
|
||||
*TERM_PROGRAM_VERSION*
|
||||
These environment variables are set by certain other terminal
|
||||
emulators. We unset them, to prevent applications from
|
||||
misdetecting foot.
|
||||
|
||||
In addition to the variables listed above, custom environment
|
||||
variables to unset may be defined in *foot.ini*(5).
|
||||
|
||||
# SEE ALSO
|
||||
|
||||
*foot*(1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue