autoinstall/autostart-manage/lib/common.sh

77 lines
1.7 KiB
Bash

#!/usr/bin/env bash
_systemctl () {
systemctl --user "${@:2}" "autostart@$1.service"
}
_query_autostart_toml() {
groups_json=$(echo -n "$2" | tr "," "\n" | jq -R . | jq -s .)
tomlq -r \
--arg host "$HOSTNAME" \
--argjson extra_groups "$groups_json" \
'.hosts[$host].groups as $groups | .apps | to_entries[] | select(
(.value.hosts | contains([$host])) or
([.value.group] | inside($groups)) or
([.value.group] | inside($extra_groups)) or
$extra_groups == ["*"]
) | '"$1" \
"$XDG_CONFIG_HOME/autostart.toml"
}
_list () {
_query_autostart_toml '.value.alias // .key' "$1"
}
_autostart_run_graphical () {
set +e
pass x # Try to unlock yubikey asap
start-audio pipewire
wait-for-service "network-online.target"
# Execute only if not already running
# Don't match keepassxc-proxy
if ! (pgrep -l keepassxc | grep -v prox) >/dev/null
then
if pass x
then
(pass keepass | head -n 1 | keepassxc --pw-stdin ~/sync/passwords.kdbx) &
fi
fi
autoinstall run graphical
autostart-manage run
}
_echo_table () {
for unit in "$@"
do
if [ "$(_systemctl "$unit" is-enabled)" = "enabled" ]
then
_enabled=$(green "enabled")
else
_enabled=$(red "disabled")
fi
if _systemctl "$unit" is-active --quiet
then
_active=$(green "active")
else
_active=$(red "inactive")
fi
printf "%s\t%s\t%s\t%s\n" \
"$unit" \
"$_enabled" \
"$_active" \
"$(_get_autostart_cmd "$unit")"
done
}
_get_autostart_cmd () {
_query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.command' "*"
}
_get_autostart_delay () {
_query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.delay // 0' "*"
}