source: lliurex-rpi-packages/trunk/fuentes/ldm/ltsp/ltsp-init-common @ 2328

Last change on this file since 2328 was 2328, checked in by kbut, 3 years ago

add new package

File size: 6.2 KB
Line 
1# Common functions shared by LTSP init scripts
2
3# ltsp_config sources ltsp-client-functions
4. /usr/share/ltsp/ltsp_config
5
6warn() {
7    msg="$1"
8    logger -p user.warning -t ltsp-client  "warning: $msg"
9}
10
11start_sound() {
12    if boolean_is_true "$SOUND" ; then
13        case "$SOUND_DAEMON" in
14            pulse|'') # The default when no value is set
15                # Explicitly allow pulse user access to sound devices, ignore errors
16                if [ -x /usr/bin/setfacl ]; then
17                    /usr/bin/setfacl -m u:pulse:rw /dev/snd/* > /dev/null 2>&1
18                fi
19
20                # Detect method, 0.9.16+ uses module-udev-detect instead of
21                # module-detect and module-stream-restore instead of
22                # module-volume-restore
23                unset PULSE_DETECT
24                unset PULSE_VOLUME_RESTORE
25                # Replace "awk" with shell built-in "while read"
26                case $(pulseaudio --version |while read a b; do echo $b; done) in
27                    0.9.1[6-9]*|0.9.[2-9][0-9]*)
28                        PULSE_DETECT=module-udev-detect
29                        PULSE_VOLUME_RESTORE=module-stream-restore
30                        ;;
31                    0.[0-9].*)
32                        PULSE_DETECT=module-detect
33                        PULSE_VOLUME_RESTORE=module-volume-restore
34                        ;;
35                    *)
36                        PULSE_DETECT=module-udev-detect
37                        PULSE_VOLUME_RESTORE=module-stream-restore
38                        ;;
39                esac
40                /usr/bin/pulseaudio --system \
41                --exit-idle-time=-1 \
42                --disable-shm \
43                --no-cpu-limit \
44                --resample-method=trivial \
45                --high-priority \
46                --log-target=syslog \
47                -L $PULSE_DETECT \
48                -L "module-esound-protocol-tcp auth-anonymous=1" \
49                -L "module-native-protocol-tcp auth-anonymous=1" \
50                -L $PULSE_VOLUME_RESTORE \
51                -L module-rescue-streams \
52                -L "module-native-protocol-unix auth-anonymous=1" \
53                -n &
54                ;;
55            esd)
56                /usr/bin/esd -nobeeps -public -tcp &
57                ;;
58            nasd)
59                /usr/bin/nasd -aa &
60                # Line copied from old LTSP:  Should we use it? [pere 2006-03-03]
61                #aumix-minimal -v100 -w100 -c90 -m10
62                ;;
63            [Ff][Aa][Ll][Ss][Ee]|[Nn]|[Nn][Oo])
64                # Do not do anything if SOUND_DAEMON is False, N, or No
65                true
66                ;;
67            *)
68                warn "Unable to start unsupported sound daemon: '$SOUND_DAEMON'"
69                ;;
70        esac
71    fi
72}
73
74configure_sound_volume() {
75    if boolean_is_true "${SOUND:-True}" ; then
76        CARD_NUM=${1:-0}
77        # Set up sound volume
78        ## Set higher volume than default if not specified by lts.conf
79   
80        [ -z "$VOLUME" ]           && VOLUME=90
81        [ -z "$PCM_VOLUME" ]       && PCM_VOLUME=90
82       
83        LANG=C amixer -c${CARD_NUM} scontents | while read line; do
84            if [ -n "$(echo $line|grep 'Simple mixer control')" ]; then
85                channel=$(echo $line|sed -e 's/^Simple mixer control //')
86            else
87                if [ -n "$channel" ]; then
88                    # Translate the channel name into an environmentally
89                    # friendly variable.  In other words, a variable
90                    # in all caps, where forward slashes, hyphens, and
91                    # spaces are replaced by underscores, and anything
92                    # in parentheses is dropped completely
93                    # eg. if the channel is named 'Mic Boost (+20dB)'
94                    #     then the variable is simply MIC_BOOST_SWITCH
95                    #
96                    # Oh, and SWITCH is used for on/off switches - value
97                    # should be on or off, and VOLUME is used for volumes
98                    # where the value should be a number representing a
99                    # percentage
100                    channel_name=$(echo ${channel}|sed -e s/^\'// -e s/\'.*$// -e 's/ -//g' -e 's/ [(].*[)]//' -e 's/\//_/g' -e 's/ /_/g' -e 's/-/_/g' |tr [a-z] [A-Z])
101                    if [ -n "$(echo $line|grep volume)" ]; then
102                        eval channel_vol="\$${channel_name}_VOLUME"
103                        if [ "${channel_name}" = "MIC" ]; then
104                            cap="cap"
105                        else
106                            unset cap
107                        fi
108                        if boolean_is_true "${VOLUME_MANUAL}"; then
109                            [ -n "${channel_vol}" ] && echo sset "${channel}" ${channel_vol}% unmute $cap
110                        else
111                            # Set default MIC volumes to 40 if unspecified
112                            # This should resolve feedback issues
113                            case "${channel_name}" in
114                                *MIC*) [ -z "${channel_vol}" ] && channel_vol=40 ;;
115                            esac
116                            echo sset "${channel}" ${channel_vol:-$VOLUME}% unmute $cap
117                        fi
118                    fi
119                    if [ -n "$(echo $line|grep switch)" ]; then
120                        eval channel_switch="\$${channel_name}_SWITCH"
121                        [ -n "${channel_switch}" ] && echo sset "${channel}" ${channel_switch}
122                    fi
123                fi
124                unset channel
125            fi
126        done | amixer -c${CARD_NUM} --stdin >/dev/null 2>&1
127    fi
128}
129
130start_screen_sessions() {
131    # If no default was found, there's no SCREEN_xx to be started, so exit
132    test -n "$SCREEN_DEFAULT" || return
133
134    # Start the default screen and make it the active tty
135    openvt -f -c "${SCREEN_DEFAULT#0}" -s -- /usr/share/ltsp/screen_session "$SCREEN_DEFAULT"
136
137    # Give the default screen a head start
138    sleep 1
139
140    # Launch the other screens without switching to them
141    for i in 01 02 03 04 05 06 07 08 09 10 11 12; do
142        test "$i" -eq "$SCREEN_DEFAULT" && continue
143        eval "screen=\$SCREEN_$i"
144        if [ -n "$screen" ]; then
145            openvt -f -c "${i#0}" -- /usr/share/ltsp/screen_session "$i"
146        fi
147    done
148}
Note: See TracBrowser for help on using the repository browser.