xref: /aosp_15_r20/external/selinux/sandbox/sandboxX.sh (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1#!/bin/bash
2trap "" TERM
3context=`id -Z | secon -t -l -P`
4export TITLE="Sandbox $context -- `grep ^#TITLE: ~/.sandboxrc | /usr/bin/cut -b8-80`"
5[ -z $1 ] && export WAYLAND_NATIVE="no" || export WAYLAND_NATIVE="$1"
6[ -z $2 ] && export SCREENSIZE="1000x700" || export SCREENSIZE="$2"
7[ -z $3 ] && export DPI="96" || export DPI="$3"
8trap "exit 0" HUP
9
10mkdir -p ~/.config/openbox
11cat > ~/.config/openbox/rc.xml << EOF
12<openbox_config xmlns="http://openbox.org/3.4/rc"
13		xmlns:xi="http://www.w3.org/2001/XInclude">
14<applications>
15  <application class="*">
16    <decor>no</decor>
17    <desktop>all</desktop>
18    <maximized>yes</maximized>
19  </application>
20</applications>
21</openbox_config>
22EOF
23
24if [ "$WAYLAND_NATIVE" == "no" ]; then
25    if [ -z "$WAYLAND_DISPLAY" ]; then
26        DISPLAY_COMMAND='/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null'
27    else
28        DISPLAY_COMMAND='/usr/bin/Xwayland -terminate -dpi $DPI -retro -geometry $SCREENSIZE -decorate -displayfd 5 5>&1 2>/dev/null'
29    fi
30    eval $DISPLAY_COMMAND | while read D; do
31        export DISPLAY=:$D
32        cat > ~/seremote << __EOF
33#!/bin/bash -x
34export DISPLAY=$DISPLAY
35export WAYLAND_DISPLAY=$WAYLAND_DISPLAY
36"\$@"
37__EOF
38        chmod +x ~/seremote
39        /usr/share/sandbox/start $HOME/.sandboxrc
40        export EXITCODE=$?
41        kill -TERM 0
42        break
43    done
44else
45    /usr/share/sandbox/start $HOME/.sandboxrc
46fi
47exit 0
48