This property controls whether the environment should be reset before
spawning the child process. Defaults to "no" and affects whether "-p" is
passed as default argument to /bin/login.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The colorterm property is used (if set) as COLORTERM environment variable.
Note that this variable (despite the name) is not used with
terminfo/termcap. Instead, it's solely used to identify the running
terminal.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Recent systemd was updated to parse XDG_SEAT in PAM so we can assign
logins to the correct seat.
This patch allows pty users to specify what seat they run on so the PTY
can correctly set the seat variable. If no seat is specified, then
XDG_SEAT is not set so we still allow non-seated logins.
Note that if kmscon_pty is run with XDG_SEAT set, this will also be set
for the client PTY so unset it if you don't want the environment to be
copied to the client (like any environment variable).
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This makes the pty layer independent of kmscon global state. This allows
us to use it in other applications bundled with kmscon. There is still
some work to do to make it fully independent so we can integrate it into
TSM. But that's not really needed, yet.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Instead of accessing global state, we now set the TERM value via a helper
function. This is needed to make the pty layer independent of kmscon.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
We now create an eloop object internally to avoid requiring public eloop
headers. Functionality is still the same but now hidden in the library.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Allow to send arbitrary signals to the foreground process group of the
pty. Linux supports the TIOCSIG ioctl so we actually do not need to
implement this on our own, yeah!
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
If the child returns EWOULDBLOCK on write we need to save the input in a
buffer to avoid loosing data. We need to work in non-blocking mode to
avoid UI hangs so we simply use the new ring-buffer object to store
data.
This also changes the callback behavior. The pty is no longer closed
implicitely so the owner must call pty_close now even if the close
callback is called. This avoids circular callbacks.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
There is no reason to keep two callbacks as the caller always registers
both. Hence, we can use a shared callback. Reading length 0 means closed
like reading from an fd.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
There is no reason to pass the eloop reference late at terminal/pty
open. If we pass it early on object creation we will always have a valid
reference and can remove several code paths.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The output_cb handles output from the pty but it actually makes more
sense to call it input_cb as we are handling input to our console here.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
pty_write actually makes more sense as we are writing to the other end
and not reading input.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit adds a new pty object.
The pty object takes care of all pseudo terminal handling, reading and
writing. It can be opened and closed, and notify through callbacks when
input arrives or the child process exits/dies. It can also receive input
and pass it along to the child process.
There is not yet any real VTE processing, so we display raw escape
codes and so on. However, this should provide immediate feedback for
any further vte development, as we start to act like a real terminal
emulator.
Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>