2220 lines
45 KiB
Bash
Executable file
2220 lines
45 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# This script was generated by bashly 1.1.10 (https://bashly.dannyb.co)
|
|
# Modifying it manually is not recommended
|
|
|
|
# :wrapper.bash3_bouncer
|
|
if [[ "${BASH_VERSINFO:-0}" -lt 4 ]]; then
|
|
printf "bash version 4 or higher is required\n" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# :command.master_script
|
|
|
|
# :command.version_command
|
|
version_command() {
|
|
echo "$version"
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage - Manage autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage - Manage autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage COMMAND\n"
|
|
printf " autostart-manage [COMMAND] --help | -h\n"
|
|
printf " autostart-manage --version | -v\n"
|
|
echo
|
|
# :command.usage_commands
|
|
printf "%s\n" "$(blue "Commands:")"
|
|
printf " %s Generate bash completions\n" "$(green "completions")"
|
|
printf " %s List available programs\n" "$(green "list") "
|
|
printf " %s Get the current status of all programs\n" "$(green "info") "
|
|
printf " %s Remove all programs from autostart and the re-enable all\n" "$(green "sync") "
|
|
printf " %s Add a single program to autostart\n" "$(green "enable") "
|
|
printf " %s Remove a single program from autostart\n" "$(green "disable") "
|
|
printf " %s Restart programs from autostart\n" "$(green "restart") "
|
|
printf " %s Start programs from autostart\n" "$(green "start") "
|
|
printf " %s Check status of programs from autostart\n" "$(green "status") "
|
|
printf " %s Stop programs from autostart\n" "$(green "stop") "
|
|
printf " %s Kill the program from autostart\n" "$(green "kill") "
|
|
printf " %s Show the log for a single program from autostart\n" "$(green "log") "
|
|
printf " %s Execute a single program from autostart\n" "$(green "exec") "
|
|
printf " %s Run all programs\n" "$(green "run") "
|
|
printf " %s Run all the wayland specific tasks and all programs\n" "$(green "run-wayland")"
|
|
printf " %s Run all the xorg specific tasks and all programs\n" "$(green "run-xorg") "
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
printf " %s\n" "$(yellow "--version, -v")"
|
|
printf " Show version number\n"
|
|
echo
|
|
|
|
# :command.usage_environment_variables
|
|
printf "%s\n" "$(blue "Environment Variables:")"
|
|
|
|
# :environment_variable.usage
|
|
printf " %s\n" "$(cyan "HOSTNAME")"
|
|
printf " The hostname to use. We will try to get the value automatically.\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_completions_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage completions - Generate bash completions\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage completions - Generate bash completions\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage completions\n"
|
|
printf " autostart-manage completions --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_list_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage list - List available programs\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage list - List available programs\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage list\n"
|
|
printf " autostart-manage list --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_info_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage info - Get the current status of all programs\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage info - Get the current status of all programs\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage info\n"
|
|
printf " autostart-manage info --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_sync_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage sync - Remove all programs from autostart and the re-enable all\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage sync - Remove all programs from autostart and the re-enable all\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage sync [GROUPS]\n"
|
|
printf " autostart-manage sync --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "GROUPS")"
|
|
printf " Extra groups to sync\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_enable_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage enable - Add a single program to autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage enable - Add a single program to autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage enable PROGRAM\n"
|
|
printf " autostart-manage enable --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to add to autostart\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_disable_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage disable - Remove a single program from autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage disable - Remove a single program from autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage disable PROGRAM\n"
|
|
printf " autostart-manage disable --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to add to autostart\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_restart_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage restart - Restart programs from autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage restart - Restart programs from autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage restart [PROGRAM]\n"
|
|
printf " autostart-manage restart --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to add to autostart\n"
|
|
printf " Default: *\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_start_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage start - Start programs from autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage start - Start programs from autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage start [PROGRAM]\n"
|
|
printf " autostart-manage start --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to start to autostart\n"
|
|
printf " Default: *\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_status_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage status - Check status of programs from autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage status - Check status of programs from autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage status [PROGRAM]\n"
|
|
printf " autostart-manage status --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to check status on\n"
|
|
printf " Default: *\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_stop_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage stop - Stop programs from autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage stop - Stop programs from autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage stop [PROGRAM]\n"
|
|
printf " autostart-manage stop --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to stop\n"
|
|
printf " Default: *\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_kill_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage kill - Kill the program from autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage kill - Kill the program from autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage kill PROGRAM\n"
|
|
printf " autostart-manage kill --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to kill\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_log_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage log - Show the log for a single program from autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage log - Show the log for a single program from autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "Alias: logs\n"
|
|
echo
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage log PROGRAM\n"
|
|
printf " autostart-manage log --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to log\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_exec_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage exec - Execute a single program from autostart\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage exec - Execute a single program from autostart\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage exec PROGRAM\n"
|
|
printf " autostart-manage exec --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
# :command.usage_args
|
|
printf "%s\n" "$(blue "Arguments:")"
|
|
|
|
# :argument.usage
|
|
printf " %s\n" "$(red "PROGRAM")"
|
|
printf " Program to execute\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_run_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage run - Run all programs\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage run - Run all programs\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage run\n"
|
|
printf " autostart-manage run --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_run_wayland_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage run-wayland - Run all the wayland specific tasks and all programs\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage run-wayland - Run all the wayland specific tasks and all programs\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage run-wayland\n"
|
|
printf " autostart-manage run-wayland --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.usage
|
|
autostart_manage_run_xorg_usage() {
|
|
if [[ -n $long_usage ]]; then
|
|
printf "autostart-manage run-xorg - Run all the xorg specific tasks and all programs\n"
|
|
echo
|
|
|
|
else
|
|
printf "autostart-manage run-xorg - Run all the xorg specific tasks and all programs\n"
|
|
echo
|
|
|
|
fi
|
|
|
|
printf "%s\n" "$(blue "Usage:")"
|
|
printf " autostart-manage run-xorg\n"
|
|
printf " autostart-manage run-xorg --help | -h\n"
|
|
echo
|
|
|
|
# :command.long_usage
|
|
if [[ -n $long_usage ]]; then
|
|
printf "%s\n" "$(blue "Options:")"
|
|
|
|
# :command.usage_fixed_flags
|
|
printf " %s\n" "$(yellow "--help, -h")"
|
|
printf " Show this help\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
# :command.normalize_input
|
|
# :command.normalize_input_function
|
|
normalize_input() {
|
|
local arg flags passthru
|
|
passthru=false
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
arg="$1"
|
|
if [[ $passthru == true ]]; then
|
|
input+=("$arg")
|
|
elif [[ $arg =~ ^(--[a-zA-Z0-9_\-]+)=(.+)$ ]]; then
|
|
input+=("${BASH_REMATCH[1]}")
|
|
input+=("${BASH_REMATCH[2]}")
|
|
elif [[ $arg =~ ^(-[a-zA-Z0-9])=(.+)$ ]]; then
|
|
input+=("${BASH_REMATCH[1]}")
|
|
input+=("${BASH_REMATCH[2]}")
|
|
elif [[ $arg =~ ^-([a-zA-Z0-9][a-zA-Z0-9]+)$ ]]; then
|
|
flags="${BASH_REMATCH[1]}"
|
|
for ((i = 0; i < ${#flags}; i++)); do
|
|
input+=("-${flags:i:1}")
|
|
done
|
|
elif [[ "$arg" == "--" ]]; then
|
|
passthru=true
|
|
input+=("$arg")
|
|
else
|
|
input+=("$arg")
|
|
fi
|
|
|
|
shift
|
|
done
|
|
}
|
|
|
|
# :command.inspect_args
|
|
inspect_args() {
|
|
if ((${#args[@]})); then
|
|
readarray -t sorted_keys < <(printf '%s\n' "${!args[@]}" | sort)
|
|
echo args:
|
|
for k in "${sorted_keys[@]}"; do
|
|
echo "- \${args[$k]} = ${args[$k]}"
|
|
done
|
|
else
|
|
echo args: none
|
|
fi
|
|
|
|
if ((${#other_args[@]})); then
|
|
echo
|
|
echo other_args:
|
|
echo "- \${other_args[*]} = ${other_args[*]}"
|
|
for i in "${!other_args[@]}"; do
|
|
echo "- \${other_args[$i]} = ${other_args[$i]}"
|
|
done
|
|
fi
|
|
|
|
if ((${#deps[@]})); then
|
|
readarray -t sorted_keys < <(printf '%s\n' "${!deps[@]}" | sort)
|
|
echo
|
|
echo deps:
|
|
for k in "${sorted_keys[@]}"; do
|
|
echo "- \${deps[$k]} = ${deps[$k]}"
|
|
done
|
|
fi
|
|
|
|
if ((${#env_var_names[@]})); then
|
|
readarray -t sorted_names < <(printf '%s\n' "${env_var_names[@]}" | sort)
|
|
echo
|
|
echo "environment variables:"
|
|
for k in "${sorted_names[@]}"; do
|
|
echo "- \$$k = ${!k:-}"
|
|
done
|
|
fi
|
|
}
|
|
|
|
# :command.user_lib
|
|
# autostart-manage/lib/colors.sh
|
|
print_in_color() {
|
|
local color="$1"
|
|
shift
|
|
if [[ -z ${NO_COLOR+x} ]]; then
|
|
printf "$color%b\e[0m\n" "$*"
|
|
else
|
|
printf "%b\n" "$*"
|
|
fi
|
|
}
|
|
|
|
red() { print_in_color "\e[31m" "$*"; }
|
|
green() { print_in_color "\e[32m" "$*"; }
|
|
yellow() { print_in_color "\e[33m" "$*"; }
|
|
blue() { print_in_color "\e[34m" "$*"; }
|
|
magenta() { print_in_color "\e[35m" "$*"; }
|
|
cyan() { print_in_color "\e[36m" "$*"; }
|
|
bold() { print_in_color "\e[1m" "$*"; }
|
|
underlined() { print_in_color "\e[4m" "$*"; }
|
|
red_bold() { print_in_color "\e[1;31m" "$*"; }
|
|
green_bold() { print_in_color "\e[1;32m" "$*"; }
|
|
yellow_bold() { print_in_color "\e[1;33m" "$*"; }
|
|
blue_bold() { print_in_color "\e[1;34m" "$*"; }
|
|
magenta_bold() { print_in_color "\e[1;35m" "$*"; }
|
|
cyan_bold() { print_in_color "\e[1;36m" "$*"; }
|
|
red_underlined() { print_in_color "\e[4;31m" "$*"; }
|
|
green_underlined() { print_in_color "\e[4;32m" "$*"; }
|
|
yellow_underlined() { print_in_color "\e[4;33m" "$*"; }
|
|
blue_underlined() { print_in_color "\e[4;34m" "$*"; }
|
|
magenta_underlined() { print_in_color "\e[4;35m" "$*"; }
|
|
cyan_underlined() { print_in_color "\e[4;36m" "$*"; }
|
|
|
|
# autostart-manage/lib/common.sh
|
|
#!/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' "*"
|
|
}
|
|
|
|
# autostart-manage/lib/send_completions.sh
|
|
send_completions() {
|
|
echo $'# autostart-manage completion -*- shell-script -*-'
|
|
echo $''
|
|
echo $'# This bash completions script was generated by'
|
|
echo $'# completely (https://github.com/dannyben/completely)'
|
|
echo $'# Modifying it manually is not recommended'
|
|
echo $''
|
|
echo $'_autostart-manage_completions_filter() {'
|
|
echo $' local words="$1"'
|
|
echo $' local cur=${COMP_WORDS[COMP_CWORD]}'
|
|
echo $' local result=()'
|
|
echo $''
|
|
echo $' if [[ "${cur:0:1}" == "-" ]]; then'
|
|
echo $' echo "$words"'
|
|
echo $' '
|
|
echo $' else'
|
|
echo $' for word in $words; do'
|
|
echo $' [[ "${word:0:1}" != "-" ]] && result+=("$word")'
|
|
echo $' done'
|
|
echo $''
|
|
echo $' echo "${result[*]}"'
|
|
echo $''
|
|
echo $' fi'
|
|
echo $'}'
|
|
echo $''
|
|
echo $'_autostart-manage_completions() {'
|
|
echo $' local cur=${COMP_WORDS[COMP_CWORD]}'
|
|
echo $' local compwords=("${COMP_WORDS[@]:1:$COMP_CWORD-1}")'
|
|
echo $' local compline="${compwords[*]}"'
|
|
echo $''
|
|
echo $' case "$compline" in'
|
|
echo $' \'completions\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "--help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'run-wayland\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "--help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'run-xorg\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "--help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'restart\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'disable\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'status\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'enable\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'start\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'sync\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "--help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'info\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "--help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'stop\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'kill\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'logs\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'exec\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'list\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "--help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'log\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "$(autostart-manage list) --help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' \'run\'*)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "--help -h")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' *)'
|
|
echo $' while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -W "$(_autostart-manage_completions_filter "--help --version -h -v completions disable enable exec info kill list log logs restart run run-wayland run-xorg start status stop sync")" -- "$cur" )'
|
|
echo $' ;;'
|
|
echo $''
|
|
echo $' esac'
|
|
echo $'} &&'
|
|
echo $'complete -F _autostart-manage_completions autostart-manage'
|
|
echo $''
|
|
echo $'# ex: filetype=sh'
|
|
}
|
|
|
|
# autostart-manage/lib/systemd_files.sh
|
|
#!/usr/bin/env bash
|
|
|
|
_deploy_service_file() {
|
|
cat <<EOF > "$1"
|
|
[Unit]
|
|
Description=Autostart several tools and services
|
|
StartLimitIntervalSec=120
|
|
StartLimitBurst=10
|
|
|
|
[Service]
|
|
KillMode=process
|
|
ExecStart=/bin/sh -c ". \$HOME/.profile && autostart-manage exec '%i'"
|
|
Restart=on-failure
|
|
RestartSec=5s
|
|
EOF
|
|
}
|
|
|
|
_deploy_target_file() {
|
|
cat <<EOF > "$1"
|
|
[Unit]
|
|
Description=Current graphical user session
|
|
Documentation=man:systemd.special(7)
|
|
RefuseManualStart=no
|
|
StopWhenUnneeded=no
|
|
EOF
|
|
}
|
|
|
|
# :command.command_functions
|
|
# :command.function
|
|
autostart_manage_completions_command() {
|
|
# autostart-manage/completions_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
send_completions
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_list_command() {
|
|
# autostart-manage/list_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
_list "*"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_info_command() {
|
|
# autostart-manage/info_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
autostart_units=()
|
|
while IFS='' read -r line
|
|
do
|
|
autostart_units+=("$line")
|
|
done < <(_list "*")
|
|
|
|
_echo_table "${autostart_units[@]}" | column -t -s$'\t' --table-columns 'Unit,Enabled?,Active?,Command'
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_sync_command() {
|
|
# autostart-manage/sync_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
rm -f "$HOME/.config/systemd/user/autostart.target.wants/"*
|
|
|
|
autostart_units=()
|
|
while IFS='' read -r line
|
|
do
|
|
autostart_units+=("autostart@$line.service")
|
|
done < <(_list "${args[groups]:-}")
|
|
|
|
systemctl --user add-wants autostart.target "${autostart_units[@]}"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_enable_command() {
|
|
# autostart-manage/systemctl.sh
|
|
#!/usr/bin/env bash
|
|
|
|
systemctl_args=("$action")
|
|
if [[ $action == "enable" ]]; then
|
|
systemctl_args=("add-wants" "autostart.target")
|
|
fi
|
|
|
|
#shellcheck disable=SC2068
|
|
_systemctl "${args[program]:?}" "${systemctl_args[@]}"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_disable_command() {
|
|
# autostart-manage/systemctl.sh
|
|
#!/usr/bin/env bash
|
|
|
|
systemctl_args=("$action")
|
|
if [[ $action == "enable" ]]; then
|
|
systemctl_args=("add-wants" "autostart.target")
|
|
fi
|
|
|
|
#shellcheck disable=SC2068
|
|
_systemctl "${args[program]:?}" "${systemctl_args[@]}"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_restart_command() {
|
|
# autostart-manage/systemctl.sh
|
|
#!/usr/bin/env bash
|
|
|
|
systemctl_args=("$action")
|
|
if [[ $action == "enable" ]]; then
|
|
systemctl_args=("add-wants" "autostart.target")
|
|
fi
|
|
|
|
#shellcheck disable=SC2068
|
|
_systemctl "${args[program]:?}" "${systemctl_args[@]}"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_start_command() {
|
|
# autostart-manage/systemctl.sh
|
|
#!/usr/bin/env bash
|
|
|
|
systemctl_args=("$action")
|
|
if [[ $action == "enable" ]]; then
|
|
systemctl_args=("add-wants" "autostart.target")
|
|
fi
|
|
|
|
#shellcheck disable=SC2068
|
|
_systemctl "${args[program]:?}" "${systemctl_args[@]}"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_status_command() {
|
|
# autostart-manage/systemctl.sh
|
|
#!/usr/bin/env bash
|
|
|
|
systemctl_args=("$action")
|
|
if [[ $action == "enable" ]]; then
|
|
systemctl_args=("add-wants" "autostart.target")
|
|
fi
|
|
|
|
#shellcheck disable=SC2068
|
|
_systemctl "${args[program]:?}" "${systemctl_args[@]}"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_stop_command() {
|
|
# autostart-manage/systemctl.sh
|
|
#!/usr/bin/env bash
|
|
|
|
systemctl_args=("$action")
|
|
if [[ $action == "enable" ]]; then
|
|
systemctl_args=("add-wants" "autostart.target")
|
|
fi
|
|
|
|
#shellcheck disable=SC2068
|
|
_systemctl "${args[program]:?}" "${systemctl_args[@]}"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_kill_command() {
|
|
# autostart-manage/systemctl.sh
|
|
#!/usr/bin/env bash
|
|
|
|
systemctl_args=("$action")
|
|
if [[ $action == "enable" ]]; then
|
|
systemctl_args=("add-wants" "autostart.target")
|
|
fi
|
|
|
|
#shellcheck disable=SC2068
|
|
_systemctl "${args[program]:?}" "${systemctl_args[@]}"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_log_command() {
|
|
# autostart-manage/log_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
journalctl --user -fu "autostart@${args[program]:?}.service"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_exec_command() {
|
|
# autostart-manage/exec_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
program=${args[program]:?}
|
|
|
|
sleep "$(_get_autostart_delay "$program")"
|
|
bash -c "$(_get_autostart_cmd "$program")"
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_run_command() {
|
|
# autostart-manage/run_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
systemctl --user start autostart.target
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_run_wayland_command() {
|
|
# autostart-manage/run_wayland_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
_autostart_run_graphical
|
|
|
|
killall -SIGUSR2 waybar
|
|
|
|
}
|
|
|
|
# :command.function
|
|
autostart_manage_run_xorg_command() {
|
|
# autostart-manage/run_xorg_command.sh
|
|
#!/usr/bin/env bash
|
|
|
|
feh --bg-fill "$XDG_PICTURES_DIR/wallpaper/active_wallpaper"
|
|
|
|
"$HOME/.config/polybar/launch.sh" &
|
|
"$HOME/.config/bspwm/focus-voip.py" &
|
|
|
|
numlockx on
|
|
xsetroot -cursor_name left_ptr
|
|
xrdb "$HOME/.Xresources"
|
|
|
|
_autostart_run_graphical
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--version | -v)
|
|
version_command
|
|
exit
|
|
;;
|
|
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.environment_variables_filter
|
|
|
|
env_var_names+=("HOSTNAME")
|
|
|
|
# :command.dependencies_filter
|
|
if command -v tomlq >/dev/null 2>&1; then
|
|
deps['tomlq']="$(command -v tomlq | head -n1)"
|
|
else
|
|
printf "missing dependency: tomlq\n" >&2
|
|
printf "%s\n" "please install yq (https://github.com/kislyuk/yq)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# :command.command_filter
|
|
action=${1:-}
|
|
|
|
case $action in
|
|
-*) ;;
|
|
|
|
completions)
|
|
action="completions"
|
|
shift
|
|
autostart_manage_completions_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
list)
|
|
action="list"
|
|
shift
|
|
autostart_manage_list_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
info)
|
|
action="info"
|
|
shift
|
|
autostart_manage_info_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
sync)
|
|
action="sync"
|
|
shift
|
|
autostart_manage_sync_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
enable)
|
|
action="enable"
|
|
shift
|
|
autostart_manage_enable_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
disable)
|
|
action="disable"
|
|
shift
|
|
autostart_manage_disable_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
restart)
|
|
action="restart"
|
|
shift
|
|
autostart_manage_restart_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
start)
|
|
action="start"
|
|
shift
|
|
autostart_manage_start_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
status)
|
|
action="status"
|
|
shift
|
|
autostart_manage_status_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
stop)
|
|
action="stop"
|
|
shift
|
|
autostart_manage_stop_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
kill)
|
|
action="kill"
|
|
shift
|
|
autostart_manage_kill_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
log | logs)
|
|
action="log"
|
|
shift
|
|
autostart_manage_log_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
exec)
|
|
action="exec"
|
|
shift
|
|
autostart_manage_exec_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
run)
|
|
action="run"
|
|
shift
|
|
autostart_manage_run_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
run-wayland)
|
|
action="run-wayland"
|
|
shift
|
|
autostart_manage_run_wayland_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
run-xorg)
|
|
action="run-xorg"
|
|
shift
|
|
autostart_manage_run_xorg_parse_requirements "$@"
|
|
shift $#
|
|
;;
|
|
|
|
# :command.command_fallback
|
|
"")
|
|
autostart_manage_usage >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
printf "invalid command: %s\n" "$action" >&2
|
|
exit 1
|
|
;;
|
|
|
|
esac
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_completions_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_completions_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="completions"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_list_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_list_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="list"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_info_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_info_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="info"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_sync_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_sync_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="sync"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['groups']+x} ]]; then
|
|
args['groups']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_enable_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_enable_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="enable"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.required_args_filter
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
printf "missing required argument: PROGRAM\nusage: autostart-manage enable PROGRAM\n" >&2
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_disable_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_disable_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="disable"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.required_args_filter
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
printf "missing required argument: PROGRAM\nusage: autostart-manage disable PROGRAM\n" >&2
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_restart_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_restart_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="restart"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.default_assignments
|
|
[[ -n ${args['program']:-} ]] || args['program']="*"
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_start_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_start_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="start"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.default_assignments
|
|
[[ -n ${args['program']:-} ]] || args['program']="*"
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_status_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_status_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="status"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.default_assignments
|
|
[[ -n ${args['program']:-} ]] || args['program']="*"
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_stop_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_stop_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="stop"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.default_assignments
|
|
[[ -n ${args['program']:-} ]] || args['program']="*"
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_kill_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_kill_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="kill"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.required_args_filter
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
printf "missing required argument: PROGRAM\nusage: autostart-manage kill PROGRAM\n" >&2
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_log_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_log_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="log"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.required_args_filter
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
printf "missing required argument: PROGRAM\nusage: autostart-manage log PROGRAM\n" >&2
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_exec_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_exec_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="exec"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
# :argument.case
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
args['program']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.required_args_filter
|
|
if [[ -z ${args['program']+x} ]]; then
|
|
printf "missing required argument: PROGRAM\nusage: autostart-manage exec PROGRAM\n" >&2
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_run_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_run_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="run"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_run_wayland_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_run_wayland_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="run-wayland"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
}
|
|
|
|
# :command.parse_requirements
|
|
autostart_manage_run_xorg_parse_requirements() {
|
|
# :command.fixed_flags_filter
|
|
while [[ $# -gt 0 ]]; do
|
|
case "${1:-}" in
|
|
--help | -h)
|
|
long_usage=yes
|
|
autostart_manage_run_xorg_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# :command.command_filter
|
|
action="run-xorg"
|
|
|
|
# :command.parse_requirements_while
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
# :command.parse_requirements_case
|
|
# :command.parse_requirements_case_simple
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
}
|
|
|
|
# :command.user_hooks
|
|
before_hook() {
|
|
# autostart-manage/before.sh
|
|
#!/usr/bin/env bash
|
|
|
|
service_file="$HOME/.config/systemd/user/autostart@.service"
|
|
if [ ! -f "$service_file" ]; then
|
|
_deploy_service_file "$service_file"
|
|
fi
|
|
|
|
target_file="$HOME/.config/systemd/user/autostart.target"
|
|
if [ ! -f "$target_file" ]; then
|
|
_deploy_target_file "$target_file"
|
|
fi
|
|
|
|
}
|
|
|
|
# :command.initialize
|
|
initialize() {
|
|
version="0.1.3"
|
|
long_usage=''
|
|
set -euo pipefail
|
|
|
|
}
|
|
|
|
# :command.run
|
|
run() {
|
|
declare -A args=()
|
|
declare -A deps=()
|
|
declare -a other_args=()
|
|
declare -a env_var_names=()
|
|
declare -a input=()
|
|
normalize_input "$@"
|
|
parse_requirements "${input[@]}"
|
|
before_hook
|
|
|
|
case "$action" in
|
|
"completions") autostart_manage_completions_command ;;
|
|
"list") autostart_manage_list_command ;;
|
|
"info") autostart_manage_info_command ;;
|
|
"sync") autostart_manage_sync_command ;;
|
|
"enable") autostart_manage_enable_command ;;
|
|
"disable") autostart_manage_disable_command ;;
|
|
"restart") autostart_manage_restart_command ;;
|
|
"start") autostart_manage_start_command ;;
|
|
"status") autostart_manage_status_command ;;
|
|
"stop") autostart_manage_stop_command ;;
|
|
"kill") autostart_manage_kill_command ;;
|
|
"log") autostart_manage_log_command ;;
|
|
"exec") autostart_manage_exec_command ;;
|
|
"run") autostart_manage_run_command ;;
|
|
"run-wayland") autostart_manage_run_wayland_command ;;
|
|
"run-xorg") autostart_manage_run_xorg_command ;;
|
|
esac
|
|
}
|
|
|
|
initialize
|
|
run "$@"
|