#!/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' "*" }