mrrl-logincaps

MRRL version of logincaps
git clone https://ccx.te2000.cz/git/mrrl-logincaps
Log | Files | Refs

commit 3b3ff786b926a7028227e309139b07751b191320
parent 06ba5bb05e60208e1312348b44402d5626dc5f45
Author: ccx <ccx@te2000.cz>
Date:   Mon, 25 Mar 2024 02:05:24 +0000

Add container-urxvt

Diffstat:
Mbin/handle-nsx11-message | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+), 0 deletions(-)

diff --git a/bin/handle-nsx11-message b/bin/handle-nsx11-message @@ -240,6 +240,53 @@ container-exec() { } typeset -f -t container-exec +container-urxvt() { + if ! [[ $1 == */* ]]; then + nag -m "Got malformed exec command: ${(qqq)1}" + return 1 + fi + local container cmd out + container=${1%%/*} + cmd=${1#*/} + + if [[ $container == */* ]]; then + nag -m "Invalid container name: contains slashes" + return 1 + fi + + if ! ensure-container-started $container; then + nag -m "Failed to start container ${(qqq)container}" + return 1 + fi + + if ! link-to-container-inbox xsession.$X.$USER $container run/exec/urxvt; then + nag -m "Failed to link urxvt socket." + return 1 + fi + + local -a el_env=( + EXEC_PATH=/run/containers/$container/run/exec/exec + URXVT_PATH=/run/inbox/xsession.$X.$USER/run/exec/urxvt + ) + local -a el_cmd=( + 'multisusbstitute {' + ' importas -i -u EXEC_PATH EXEC_PATH' + ' importas -i -u URXVT_PATH URXVT_PATH' + '}' + 's6-sudo $EXEC_PATH' + '/mnt/ns/bin/spawn-pty {' + " $cmd" + '} s6-sudo $URXVT_PATH' + ) + if out=$( 2>&1 env $el_env execlineb -c "${(F)el_cmd}" ); then + return 0 + else + nag -m "Error spawning session (exit $?): ${(qqq)out}" + return 1 + fi +} +typeset -f -t container-urxvt + pass-input() { local wid=$1 local entry=$2 @@ -278,6 +325,10 @@ case $data in container-exec "${data#*/}" ;; + (container-urxvt/*) + container-urxvt "${data#*/}" + ;; + (ssh/*:*) local ssh_hostport="${data#*/}" local ssh_host="${ssh_hostport%:*}"