Migrating source code to RSA from private.
[framework/uifw/e17.git] / x-ui.sh
1 #!/bin/sh
2
3 DPI=${DPI:-142}
4 SCREEN=${SCREEN:-640x480}
5 PROFILE=${PROFILE:-standard}
6 VERBOSE=${VERBOSE:-0}
7 VALGRIND=${VALGRIND}
8 VALGRIND_LOG_FILE=${VALGRIND_LOG_FILE}
9 MASSIF=${MASSIF}
10 CALLGRIND=${CALLGRIND}
11 HOST_CURSOR=${HOST_CURSOR}
12 TEST_HOME=${TEST_HOME}
13
14 show_help()
15 {
16     cat <<HELP_EOF
17 Usage:
18
19    $0 [options]
20
21 where options are:
22
23   -c, --host-cursor        Uses host-cursor, otherwise uses Xephyr's.
24   -d, --dpi=NUMBER         states the dots-per-inch to be used.
25   -s, --screen=SPEC        WIDTHxHEIGHT[xDEPTH] to be used.
26   -x, --fxs=WxH+X+Y        Fake xinerama screen resolution
27                            (can be applied repeatedly)
28   -p, --profile=NAME       Enlightenment profile name.
29   -e, --empty-home[=PATH]  Run with \$HOME being a new, empty directory at /tmp
30
31
32 Debugger options:
33
34   --valgrind=MODE      Run under valgrind to check for memory problems.
35                        Same value as enlightenment_start, mode is "OR" of:
36                           1 = plain valgrind to catch crashes (default)
37                           2 = trace children (thumbnailer, efm slaves, ...)
38                           4 = check leak
39                           8 = show reachable after processes finish.
40                         all = all of above
41   --valgrind-log-file=FILENAME
42                        Save valgrind log to file, see valgrind's
43                        --log-file for details.
44   --massif             Run under massif valgrind tool.
45   --callgrind          Run under callgrind valgrind tool.
46
47
48 Misc options:
49   -v, --verbose            Be verbose about what is being done.
50   -h, --help               Show this help.
51
52
53 Useful or common options:
54
55     --dpi=142 --screen=240x320x16
56     --dpi=142 --screen=320x240x16
57     --dpi=186 --screen=272x480x16
58     --dpi=186 --screen=480x272x16
59     --dpi=181 --screen=320x320x16
60     --dpi=183 --screen=320x480x16 --host-cursor
61     --dpi=183 --screen=480x320x16 --host-cursor
62     --dpi=183 --screen=480x800x16
63     --dpi=183 --screen=800x480x16
64     --dpi=284 --screen=480x640x16
65     --dpi=284 --screen=640x480x16 --host-cursor
66     --dpi=183 --screen=960x400x16 --host-cursor
67     --dpi=284 --screen=480x800 --host-cursor
68     --dpi=284 --screen=480x640
69     --dpi=284 --screen=640x480
70     --dpi=181 --screen=320x320
71     --dpi=186 --screen=272x480
72     --dpi=142 --screen=240x320
73     --dpi=142 --screen=240x240 --host-cursor
74
75 HELP_EOF
76 }
77
78 while [ $# -gt 0 ]; do
79     arg=$1
80     shift
81     option=`echo "'$arg'" | cut -d'=' -f1 | tr -d "'"`
82     value=`echo "'$arg'" | cut -d'=' -f2- | tr -d "'"`
83     if [ x"$value" = x"$option" ]; then
84         value=""
85     fi
86
87     case $option in
88         -h|-help|--help)
89             show_help
90             exit 0
91             ;;
92         -v|-verbose|--verbose)
93             VERBOSE=1
94             ;;
95         -e|-empty-home|--empty-home)
96             if [ -z "$value" ]; then
97                 TEST_HOME="/tmp/e-test-${USER:-$UID}"
98             else
99                 TEST_HOME="$value"
100             fi
101             ;;
102         -d|-dpi|--dpi)
103             if [ -z "$value" ]; then
104                 value=$1
105                 shift
106             fi
107             DPI=$value
108             ;;
109         -s|-screen|--screen)
110             if [ -z "$value" ]; then
111                 value=$1
112                 shift
113             fi
114             SCREEN=$value
115             ;;
116         -x|-fxs|--fxs)
117             if [ -z "$value" ]; then
118                 value=$1
119                 shift
120             fi
121             FAKE_XINERAMA_SCREEN="$FAKE_XINERAMA_SCREEN $value"
122             ;;
123         -p|-profile|--profile)
124             if [ -z "$value" ]; then
125                 value=$1
126                 shift
127             fi
128             PROFILE=$value
129             ;;
130         -c|-host-cursor|--host-cursor)
131             HOST_CURSOR="-host-cursor"
132             ;;
133         -valgrind|--valgrind)
134             if [ -z "$value" ]; then
135                 value=$1
136                 shift
137             fi
138             VALGRIND=$value
139             ;;
140         -valgrind-log-file|--valgrind-log-file)
141             if [ -z "$value" ]; then
142                 value=$1
143                 shift
144             fi
145             VALGRIND_LOG_FILE=$value
146             ;;
147         -massif|--massif)
148             MASSIF="1"
149             ;;
150         -callgrind|--callgrind)
151             CALLGRIND="1"
152             ;;
153         *)
154             echo "Unknown option: $option" 1>&2
155             ;;
156     esac
157 done
158
159 debuggers=0
160
161 if [ ! -z "$MASSIF" ]; then
162     DEBUGGER="-massif"
163     ((debuggers++))
164 fi
165
166 if [ ! -z "$CALLGRIND" ]; then
167     DEBUGGER="-callgrind"
168     ((debuggers++))
169 fi
170
171 if [ ! -z "$VALGRIND" ]; then
172     DEBUGGER="-valgrind=$VALGRIND"
173     ((debuggers++))
174 fi
175
176 if [ $debuggers -gt 1 ]; then
177     echo "WARNING: more than one debugger specified. Using $DEBUGGER" 1>&2
178 fi
179
180 if [ ! -z "$FAKE_XINERAMA_SCREEN" ]; then
181         for fxsm in $FAKE_XINERAMA_SCREEN; do
182                 E_OPTIONS="$E_OPTIONS -fake-xinerama-screen $fxsm"
183         done
184 fi
185
186 if [ ! -z "$TEST_HOME" ]; then
187     if [ "${TEST_HOME#/tmp/}" != "$TEST_HOME" ]; then
188         # just delete if inside /tmp
189         rm -fr "$TEST_HOME/"
190     fi
191     mkdir -p "$TEST_HOME"
192 fi
193
194 unset E_RESTART E_START E_IPC_SOCKET E_START_TIME E_CONF_PROFILE E_PREFIX
195
196 if [ $VERBOSE -ne 0 ]; then
197     cat <<EOF
198 Using:
199
200    DPI=$DPI
201    SCREEN=$SCREEN
202    FAKE_XINERAMA_SCREEN=$FAKE_XINERAMA_SCREEN
203    PROFILE=$PROFILE
204    HOST_CURSOR=$HOST_CURSOR
205    DEBUGGER=$DEBUGGER
206       VALGRIND=$VALGRIND
207       VALGRIND_LOG_FILE=$VALGRIND_LOG_FILE
208       MASSIF=$MASSIF
209       CALLGRIND=$CALLGRIND
210    TEST_HOME=$TEST_HOME
211 EOF
212     set -x
213 fi
214
215 Xephyr :1 -noreset -ac -br -dpi $DPI -screen $SCREEN $HOST_CURSOR &
216
217 sleep 1
218 export DISPLAY=:1
219 [ ! -z "$TEST_HOME" ] && export HOME="$TEST_HOME"
220 enlightenment_start \
221     -no-precache \
222     -i-really-know-what-i-am-doing-and-accept-full-responsibility-for-it \
223     -profile $PROFILE \
224         $E_OPTIONS \
225     $DEBUGGER