#!/usr/bin/env bash _systemctl () { systemctl --user "${@:2}" "autostart@$1.service" } _query_autostart_toml() { tomlq -r --arg host "$HOSTNAME" \ '.hosts[$host].groups as $groups | .apps | to_entries[] | select( (.value.hosts | contains([$host])) or ([.value.group] | inside($groups)) ) | '"$1" \ "$XDG_CONFIG_HOME/autostart.toml" } _list () { _query_autostart_toml '.value.alias // .key' } _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 --quiet 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' }