File: launcher.sh

package info (click to toggle)
papers 48.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 23,096 kB
  • sloc: ansic: 38,478; sh: 195; xml: 127; makefile: 117
file content (175 lines) | stat: -rwxr-xr-x 6,017 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#!/bin/sh

if test "x$GTK_DEBUG_LAUNCHER" != x; then
    set -x
fi

if test "x$GTK_DEBUG_GDB" != x; then
    EXEC="gdb --args"
else
    EXEC=exec
fi

name=`basename "$0"`
tmp="$0"
tmp=`dirname "$tmp"`
tmp=`dirname "$tmp"`
bundle=`dirname "$tmp"`
bundle=`realpath "$bundle"`
bundle_contents="$bundle"/Contents
bundle_res="$bundle_contents"/Resources
bundle_lib="$bundle_res"/lib
bundle_bin="$bundle_res"/bin
bundle_data="$bundle_res"/share
bundle_etc="$bundle_res"/etc

export XDG_CONFIG_DIRS="$bundle_etc"/xdg
export XDG_DATA_DIRS="$bundle_data"
export GTK_DATA_PREFIX="$bundle_res"
export GTK_EXE_PREFIX="$bundle_res"
export GTK_PATH="$bundle_res"

export PPS_BACKENDS_DIR=`realpath "$bundle_lib"/papers/5/backends`
export DYLD_LIBRARY_PATH=`realpath "$bundle_lib"`


export GDK_PIXBUF_MODULE_FILE="$bundle_lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"
if [ `uname -r | cut -d . -f 1` -ge 10 ]; then
    export GTK_IM_MODULE_FILE="$bundle_lib/gtk-4.0/4.0.0/immodules.cache"
fi

APP=$name
I18NDIR="$bundle_data/locale"
# Set the locale-related variables appropriately:
unset LANG LC_MESSAGES LC_MONETARY LC_COLLATE

# Has a language ordering been set?
# If so, set LC_MESSAGES and LANG accordingly; otherwise skip it.
# First step uses sed to clean off the quotes and commas, to change - to _, and change the names for the chinese scripts from "Hans" to CN and "Hant" to TW.
APPLELANGUAGES=`defaults read .GlobalPreferences AppleLanguages | sed -En   -e 's/\-/_/' -e 's/Hant/TW/' -e 's/Hans/CN/' -e 's/[[:space:]]*\"?([[:alnum:]_]+)\"?,?/\1/p' `
if test "$APPLELANGUAGES"; then
    # A language ordering exists.
    # Test, item per item, to see whether there is an corresponding locale.
    for L in $APPLELANGUAGES; do
        #test for exact matches:
       if test -f "$I18NDIR/${L}/LC_MESSAGES/$APP.mo"; then
            export LANG=$L
            break
        fi
        # This is a special case, because often the original strings are in US
        # English and there is no translation file.
        if test "x$L" == "xen_US"; then
            export LANG=$L
            break
        fi
        #OK, now test for just the first two letters:
        if test -f "$I18NDIR/${L:0:2}/LC_MESSAGES/$APP.mo"; then
            export LANG=${L:0:2}
            break
        fi
        #Same thing, but checking for any english variant.
        if test "x${L:0:2}" == "xen"; then
            export LANG=$L
            break
        fi;
    done
fi
unset APPLELANGUAGES L

# If we didn't get a language from the language list, try the Collation preference, in case it's the only setting that exists.
APPLECOLLATION=`defaults read .GlobalPreferences AppleCollationOrder`
if test -z ${LANG} && test -n $APPLECOLLATION; then
    if test -f "$I18NDIR/${APPLECOLLATION:0:2}/LC_MESSAGES/$APP.mo"; then
        export LANG=${APPLECOLLATION:0:2}
    fi
fi
if test -n $APPLECOLLATION; then
    export LC_COLLATE=$APPLECOLLATION
fi
unset APPLECOLLATION

# Continue by attempting to find the Locale preference.
APPLELOCALE=`defaults read .GlobalPreferences AppleLocale`

if test -f "$I18NDIR/${APPLELOCALE:0:5}/LC_MESSAGES/$APP.mo"; then
    if test -z $LANG; then
        export LANG="${APPLELOCALE:0:5}"
    fi

elif test -z $LANG && test -f "$I18NDIR/${APPLELOCALE:0:2}/LC_MESSAGES/$APP.mo"; then
    export LANG="${APPLELOCALE:0:2}"
fi

# Next we need to set LC_MESSAGES. If at all possible, we want a full
# 5-character locale to avoid the "Locale not supported by C library"
# warning from Gtk -- even though Gtk will translate with a
# two-character code.
if test -n $LANG; then
    # If the language code matches the applelocale, then that's the message
    # locale; otherwise, if it's longer than two characters, then it's
    # probably a good message locale and we'll go with it.
    if test $LANG == ${APPLELOCALE:0:5} || test $LANG != ${LANG:0:2}; then
        export LC_MESSAGES=$LANG
# Next try if the Applelocale is longer than 2 chars and the language
# bit matches $LANG
    elif test $LANG == ${APPLELOCALE:0:2} && test $APPLELOCALE > ${APPLELOCALE:0:2}; then
        export LC_MESSAGES=${APPLELOCALE:0:5}
    # Fail. Get a list of the locales in $I18DIR that match
    # our two letter language code and pick the first one, special casing
    # english to set en_US
    elif test $LANG == "en"; then
        export LC_MESSAGES="en_US"
    else
        LOC=`find $I18DIR -name $LANG???`
        for L in $LOC; do
            export LC_MESSAGES=$L
        done
    fi
else
    # All efforts have failed, so default to US english
    export LANG="en_US"
    export LC_MESSAGES="en_US"
fi
CURRENCY=`echo $APPLELOCALE |  sed -En 's/.*currency=([[:alpha:]]+).*/\1/p'`
if test -n "$CURRENCY"; then
   # The user has set a special currency. Gtk doesn't install
   # LC_MONETARY files, but Apple does in /usr/share/locale, so we're
   # going to look there for a locale to set LC_CURRENCY to.
    if test -f /usr/local/share/$LC_MESSAGES/LC_MONETARY; then
        if test `cat /usr/local/share/$LC_MESSAGES/LC_MONETARY` == $CURRENCY; then
            export LC_MONETARY=$LC_MESSAGES
        fi
    fi
    if test -z "$LC_MONETARY"; then
        FILES=`find /usr/share/locale -name LC_MONETARY -exec grep -H $CURRENCY {} \;`
        if test -n "$FILES"; then
            export LC_MONETARY=`echo $FILES | sed -En 's%/usr/share/locale/([[:alpha:]_]+)/LC_MONETARY.*%\1%p'`
        fi
    fi
fi
# No currency value means that the AppleLocale governs:
if test -z "$LC_MONETARY"; then
    LC_MONETARY=${APPLELOCALE:0:5}
fi
# For Gtk, which only looks at LC_ALL:
export LC_ALL=$LC_MESSAGES

unset APPLELOCALE FILES LOC

if test -f "$bundle_lib/charset.alias"; then
    export CHARSETALIASDIR="$bundle_lib"
fi

# Extra arguments can be added in environment.sh.
EXTRA_ARGS=
if test -f "$bundle_res/environment.sh"; then
    source "$bundle_res/environment.sh"
fi

# Strip out the argument added by the OS.
if /bin/expr "x$1" : '^x-psn_' > /dev/null; then
    shift 1
fi

$EXEC "$bundle_contents/MacOS/$name-bin" "$@" $EXTRA_ARGS