summaryrefslogtreecommitdiff
path: root/guides/setups/operating-systems/apps-demo/activate
blob: fbf522c3a2dbb1fa2ce608c9e2f7249f44af43dd (plain)
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
# Hey Emacs; this is a -*- shell-script -*-.
# Hopefully invoked by bash 🤞

_apps_dir=$(realpath --no-symlinks $(dirname ${BASH_SOURCE}))

_apps_PATH=$(
    shopt -s nullglob
    bins=( "${_apps_dir}"/*/bin )
    IFS=: eval 'echo "${bins[*]}"'
)
export PATH=${_apps_PATH}:${PATH}

_apps_XDG_DATA_DIRS=$(
    shopt -s nullglob
    # We could set globstar and let Bash loose, searching the depths
    # of _apps_dir for
    # **/{applications/*.desktop,systemd/user/*.service}
    # but it seems like asking for trouble.  Make some assumptions
    # about where applications typically dump their XDG-related files.
    datadirs=($(
        {
            for dkentry in "${_apps_dir}"/*/share/applications/*.desktop
            do
                echo ${dkentry%/applications/*.desktop}
            done
            for unit in "${_apps_dir}"/*/lib*/systemd/user/*.service
            do
                echo ${unit%/systemd/user/*.service}
            done
        } | sort -u
    ))
    IFS=: eval 'echo "${datadirs[*]}"'
)
export XDG_DATA_DIRS=$(
    if test "${XDG_DATA_DIRS}"
    then
        echo "${_apps_XDG_DATA_DIRS}:${XDG_DATA_DIRS}"
    else
        echo "${_apps_XDG_DATA_DIRS}"
    fi
)