reworked auto-start to support name=command mapping

This commit is contained in:
Menno van Leeuwen 2025-01-20 11:01:26 +01:00
parent cd8d2d34db
commit 9442cba158
Signed by: vleeuwenmenno
SSH Key Fingerprint: SHA256:OJFmjANpakwD3F2Rsws4GLtbdz1TJ5tkQF0RZmF0TRE

View File

@ -1,17 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
source $HOME/dotfiles/bin/helpers/functions.sh
apps=( # Define associative array with app_name => command mapping
"spotify" declare -A apps=(
"whatsapp-for-linux" ["spotify"]="flatpak run com.spotify.Client"
"telegram-desktop" ["whatsapp"]="whatsapp-for-linux"
"vesktop" ["telegram"]="flatpak run io.github.kukuruzka165.materialgram"
"trayscale" ["discord"]="flatpak run com.discordapp.Discord"
"1password" ["trayscale"]="trayscale"
"ulauncher-wrapped --no-window-shadow --hide-window" ["1password"]="1password"
"polkit-agent" ["ulauncher"]="ulauncher-wrapped --no-window-shadow --hide-window"
"swaync"
"nm-applet"
"blueman-applet"
) )
# check if screen has any dead sessions # check if screen has any dead sessions
@ -20,18 +18,20 @@ if screen -list | grep -q "Dead"; then
fi fi
echo "Starting auto-start applications..." echo "Starting auto-start applications..."
for app in "${apps[@]}"; do for app_name in "${!apps[@]}"; do
app_name=$(echo $app | awk '{print $1}') command="${apps[$app_name]}"
app_params=$(echo $app | cut -d' ' -f2-) command_binary=$(echo $command | awk '{print $1}')
if [ -x "$(command -v $app_name)" ]; then if [ -x "$(command -v $command_binary)" ]; then
if screen -list | grep -q $app_name; then if screen -list | grep -q $app_name; then
echo "$app_name is already running. Skipping..." printfe "%s\n" "yellow" "$app_name is already running. Skipping..."
continue continue
fi fi
echo "Starting $app_name with parameters $app_params..." printfe "%s\n" "green" "Starting $app_name with command: $command..."
screen -dmS $app_name $app_name $app_params screen -dmS $app_name $command
sleep 1 sleep 1
fi fi
done done
screen -ls