matryer / xbar

Put the output from any script or program into your macOS Menu Bar (the BitBar reboot)
https://xbarapp.com
MIT License
17.45k stars 641 forks source link

Plugin can't call itself #908

Open AlexisMaizel opened 7 months ago

AlexisMaizel commented 7 months ago

Hi, I have been using xbar for a while to easily connect/disconnect from a VPN. Lately, the script stopped functioning. I'm on macOS 13.6.2.

The following dummy plugin reproduces the problem; it is supposed to toggle a variable but does not work:

#!/usr/bin/env bash
STATUS=NA

case "$1" in
    on)
        STATUS=1
        ;;
    off)
        STATUS=0
        ;;
esac

if [ "$STATUS" == "1" ]; then 
    echo "Status: $STATUS"
    echo '---'
    echo "Turn off | bash='$0' param1=off terminal=false refresh=true"
    exit
else
    echo "Status: $STATUS"
    echo '---'
    echo "Turn on | bash='$0' param1=on terminal=false refresh=true"
    exit
fi

The issue seems to be that the plugin fails to call itself for action (bash=$0).

Any help on how to solve this would be appreciated. :-)

moritztim commented 5 months ago

Try using shell instead of bash, according to the docs that's the correct keyword. I don't know if it used to be bash, argos has bash instead of shell, maybe it changed in xbar in a recent release.

AlexisMaizel commented 5 months ago

Thanks for the input. Unfortunately, that did not solve the problem. I tried with both bash= and shell= Here is the current version of the dummy script I'm using:

#!/usr/bin/env bash
STATUS=NA

case "$1" in
    on)
        STATUS=1
        ;;
    off)
        STATUS=0
        ;;
esac

if [ "$STATUS" -eq 1 ]; then 
    echo "Status: $STATUS"
    echo '---'
    echo "Turn off | shell=\"$(realpath "$0")\" param1=off terminal=false refresh=true"
    exit
else
    echo "Status: $STATUS"
    echo '---'
    echo "Turn on | shell=\"$(realpath "$0")\" param1=on terminal=false refresh=true"
    exit
fi

I am completely clueless about what is going on :-/