summaryrefslogtreecommitdiff
path: root/guides/sysadmin/apps-demo/activate
blob: b8c9138735c514c7ae46a55352c456d22661d2c6 (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
# 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="${_apps_XDG_DATA_DIRS}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"