Files
lightbar/scripts/install.sh
2026-09-29 13:01:10 +02:00

49 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
project_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
data_home=${XDG_DATA_HOME:-"${HOME}/.local/share"}
config_home=${XDG_CONFIG_HOME:-"${HOME}/.config"}
binary_dir=${HOME}/.local/bin
bar_config=${config_home}/lightbar/bar.conf
cargo build --locked --release --manifest-path "${project_dir}/Cargo.toml"
install -Dm755 "${project_dir}/target/release/lightbar" "${binary_dir}/lightbar"
install -d "${config_home}/lightbar"
if [[ ! -e "${config_home}/lightbar/config.toml" ]]; then
install -m644 "${project_dir}/examples/config.toml" "${config_home}/lightbar/config.toml"
fi
if [[ ! -e "${config_home}/lightbar/theme.toml" ]]; then
install -m644 "${project_dir}/examples/theme.toml" "${config_home}/lightbar/theme.toml"
fi
# Sway may be started with a PATH that does not contain ~/.local/bin. Keep the
# path resolution out of the shared Sway config by generating this per-user
# fragment with absolute paths at install time.
bar_config_tmp=$(mktemp)
trap 'rm -f "${bar_config_tmp}"' EXIT
printf '%s\n' \
'# Generated by Lightbar. Re-run scripts/install.sh after moving the install.' \
'bar lightbar {' \
" swaybar_command ${binary_dir}/lightbar --config ${config_home}/lightbar/config.toml" \
'}' > "${bar_config_tmp}"
install -m644 "${bar_config_tmp}" "${bar_config}"
rm -f "${bar_config_tmp}"
trap - EXIT
install -d "${data_home}/doc/lightbar"
install -m644 "${project_dir}/README.md" "${data_home}/doc/lightbar/README.md"
install -m644 "${project_dir}/TOOD.md" "${data_home}/doc/lightbar/TOOD.md"
printf 'Installed %s\n' "${binary_dir}/lightbar"
printf 'Configuration: %s\n' "${config_home}/lightbar/config.toml"
printf 'Sway bar fragment: %s\n' "${bar_config}"
printf 'Run: %s doctor\n' "${binary_dir}/lightbar"
printf '\nAdd this at top level in your Sway config (and remove the old bar block):\n'
if [[ "${config_home}" == "${HOME}/.config" ]]; then
printf ' include ~/.config/lightbar/bar.conf\n'
else
printf ' include %s\n' "${bar_config}"
fi