mabox-tools/bin/mb-conky-session
2020-02-29 14:17:05 +01:00

112 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
##
# Read saved BunsenLabs Conky session file(s) and start the conkys
#
# Written by damo <damo@bunsenlabs.org> for BunsenLabs Linux, April 2015
#
# Repackaged for Manjaro by napcok <napcok@gmail.com>, March 2016
#
# To start the default conky session at login, add the following line
# to config/openbox/autostart:
#
# (sleep 2s && mb-conky-session --autostart) &
#
########################################################################
CONKYPATH="$HOME/.config/conky"
SESSIONFILE="$CONKYPATH/conky-sessionfile"
USAGE="\vUSAGE:\tmb-conky-session [OPTION(S)]...FILES
\n\tWith no command argument, the script uses the default
\t\"\$CONKYPATH/conky-session\" sessionfile
\vOPTIONS:\n\t--default\t: specify default sessionfile
\t--autostart\t: no \"kill conky\" option asked for
\tpath/to/sessionfile1 /path/to/sessionfile2 etc
\vEXAMPLES:
\tRun specified sessionfile at login:
\t\"mb-conky-session --autostart /path/to/sessionfile\"
\v\tRun default sessionfile, without killing running conkys:
\t\"mb-conky-session --autostart\"
\v\tRun several conky sessionfiles (option to kill conkys first):
\t\"mb-conky-session --default sessionfile1 sessionfile2 etc\""
### DIALOG VARIABLES
DLG="yad --center --undecorated --borders=20 "
TITLE="Mabox Conky Session"
WINICON="--window-icon=distributor-logo-mabox"
OK="--button=OK:0"
case $LANG in
pl*)
CANCEL="--button=Anuluj:1"
KILL_FIRST="Czy zamknąć najpierw działające Conky?"
;;
*)
CANCEL="--button=Cancel:1"
KILL_FIRST="Kill running conkys first?"
;;
esac
########################################################################
findArgs(){ # get command args (switches & sessionfile paths)
i=0
for arg in "$@";do
if [[ $arg = "--default" ]]; then
arg="$SESSIONFILE"
fi
if [[ $arg = "--autostart" ]]; then
NOKILL=1 # run from autostart, so don't ask to kill conkys
fi
if [[ -f $arg ]]; then # sessionfile exists
rawArr[$i]="$arg" # add sessionfiles to array
i=$(($i+1))
fi
done
# check if sessionfiles were passed to bl-conky-session
if (( ${#rawArr[@]} != 0 )); then
# remove duplicate args
sessArr=(`printf "%s\n" "${rawArr[@]}" | sort -u`)
if (( $NOKILL == 0 )); then
killConkys
fi
for SESSION in "${sessArr[@]}";do # run the conkys in the sessionfiles
source "$SESSION"
done
else # --autostart used, but no sessionfiles passed to bl-conkyzen
if [[ -f $SESSIONFILE ]] && (( $NOKILL == 1 )); then
source "$SESSIONFILE" # use conky-sessionfile
else
echo -e "ERROR: sessionfile \"$SESSIONFILE\" not found. Using default" >&2
conky -c $HOME/.conkyrc # run default conky
exit 0
fi
fi
}
killConkys(){
if pidof conky &>/dev/null; then
$DLG $WINICON --title="$TITLE" --text="$KILL_FIRST"
if (( $? == 0 )); then # kill all conkys
killall conky && sleep 0.2s
fi
fi
}
NOKILL=0
if (( $# == 0 )); then # if no args, then run default sessionfile
killConkys
if [[ ! -f "$SESSIONFILE" ]]; then # run default conky
echo -e "ERROR: sessionfile \"$SESSIONFILE\" not found. Using default" >&2
conky -c $HOME/.conkyrc
exit 0
else
source "$SESSIONFILE"
fi
elif [[ $1 = "-h" ]] || [[ $1 = "--help" ]]; then
echo -e "$USAGE"
exit 0
else
findArgs $@ # get the sessionfile paths from the command args
fi
exit 0