diff options
Diffstat (limited to 'src/firestartx')
-rwxr-xr-x | src/firestartx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/firestartx b/src/firestartx new file mode 100755 index 0000000..636fc84 --- /dev/null +++ b/src/firestartx | |||
@@ -0,0 +1,58 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | get_new_display() | ||
4 | { | ||
5 | for ((n=1; n<99; ++n)) | ||
6 | do | ||
7 | if [ ! -e /tmp/.X$n-lock ] | ||
8 | then | ||
9 | NEW_DISPLAY=:$n | ||
10 | return | ||
11 | fi | ||
12 | done | ||
13 | false | ||
14 | } | ||
15 | |||
16 | get_new_display || exit | ||
17 | |||
18 | if [ $# = 0 ] | ||
19 | then | ||
20 | set -- firestart | ||
21 | fi | ||
22 | |||
23 | # TITLE=$* # lol, startx doesn't support arguments with spaces | ||
24 | TITLE=$1 | ||
25 | TITLE= # blank title documents the screen grab keys in the title | ||
26 | |||
27 | if [ "$1" != firestart ] | ||
28 | then | ||
29 | USE_XINIT=y | ||
30 | fi | ||
31 | |||
32 | if [ "$USE_XINIT" ] | ||
33 | then | ||
34 | set -x | ||
35 | case "$1" in | ||
36 | /*) ;; | ||
37 | *) f1=$(which "$1") || exit | ||
38 | shift | ||
39 | set -- "$f1" "$@" | ||
40 | ;; | ||
41 | esac | ||
42 | xinit "$@" -- $(which Xephyr) "$NEW_DISPLAY" -resizeable -p 0 -terminate ${TITLE:+ -title "$TITLE"} | ||
43 | else | ||
44 | set -x | ||
45 | dpi=$(xrdb -query | sed -n -e 's/^Xft.dpi:[ \t]*//p') | ||
46 | startx -- "$(which Xephyr)" "$NEW_DISPLAY" \ | ||
47 | -resizeable \ | ||
48 | -p 0 \ | ||
49 | -terminate \ | ||
50 | ${TITLE:+ -title "$TITLE"} \ | ||
51 | ${dpi:+ -dpi "$dpi"} \ | ||
52 | & | ||
53 | if [ $# -gt 0 ] | ||
54 | then | ||
55 | DISPLAY=$NEW_DISPLAY "$@" & | ||
56 | fi | ||
57 | wait | ||
58 | fi | ||