mirror of https://gitlab.com/bashrc2/epicyon
130 lines
3.7 KiB
Bash
Executable File
130 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
currUser="$USER"
|
|
|
|
if [ ! -d "${HOME}/.config/systemd/user" ]; then
|
|
mkdir -p "${HOME}/.config/systemd/user"
|
|
fi
|
|
|
|
if [ ! -f /usr/bin/zenity ]; then
|
|
if [ -f /usr/bin/apt ]; then
|
|
sudo apt -y install zenity
|
|
fi
|
|
if [ -f /usr/bin/pacman ]; then
|
|
sudo pacman -S --noconfirm zenity
|
|
fi
|
|
fi
|
|
|
|
HANDLE=$(zenity --entry --width=400 --title "Epicyon Desktop Client" --text "Fediverse handle (name@domain): ")
|
|
if [ ! "$HANDLE" ]; then
|
|
zenity --warning --width=400 --text "No fediverse handle was given"
|
|
exit 1
|
|
fi
|
|
if [[ "$HANDLE" != *'@'* ]]; then
|
|
zenity --warning --width=400 --text "Fediverse handle must be in the form username@domain"
|
|
exit 2
|
|
fi
|
|
# PASSWORD=$(zenity --width=400 --password --title "Epicyon Desktop Client")
|
|
# if [ ! "$PASSWORD" ]; then
|
|
# zenity --warning --width=400 --text "No password was given"
|
|
# exit 3
|
|
# fi
|
|
|
|
if [ ! -f /usr/bin/git ]; then
|
|
if [ -f /usr/bin/apt ]; then
|
|
sudo apt -y install git
|
|
fi
|
|
if [ -f /usr/bin/pacman ]; then
|
|
sudo pacman -S --noconfirm git
|
|
fi
|
|
fi
|
|
|
|
if [ ! -f /usr/bin/gpg ]; then
|
|
if [ -f /usr/bin/apt ]; then
|
|
sudo apt -y install gnupg
|
|
fi
|
|
if [ -f /usr/bin/pacman ]; then
|
|
sudo pacman -S --noconfirm gnupg
|
|
fi
|
|
fi
|
|
|
|
if [ ! -f /usr/bin/python3 ]; then
|
|
if [ -f /usr/bin/apt ]; then
|
|
sudo apt -y install python3
|
|
fi
|
|
if [ -f /usr/bin/pacman ]; then
|
|
sudo pacman -S --noconfirm python
|
|
fi
|
|
fi
|
|
|
|
if [ ! -d ${HOME}/.epicyon ]; then
|
|
git clone https://gitlab.com/bashrc2/epicyon ${HOME}/.epicyon
|
|
else
|
|
cd ${HOME}/.epicyon || exit 1
|
|
git pull
|
|
fi
|
|
if [ ! -d ${HOME}/.epicyon ]; then
|
|
zenity --warning --width=400 --text "Unable to clone Epicyon repo"
|
|
exit 4
|
|
fi
|
|
chown -R "${currUser}":"${currUser}" ${HOME}/.epicyon
|
|
|
|
notificationType=
|
|
if [ -f /usr/bin/notify-send ]; then
|
|
notificationType='notify-send'
|
|
else
|
|
if [ -f /usr/bin/zenity ]; then
|
|
notificationType='zenity'
|
|
fi
|
|
fi
|
|
if [[ ! "$notificationType" ]]; then
|
|
zenity --warning --width=400 --text "No desktop notification command was found."
|
|
exit 5
|
|
fi
|
|
|
|
if [ ! -d ${HOME}/.gnupg ]; then
|
|
echo 'Generating GPG key'
|
|
gpg --quick-generate-key "${HANDLE}" ed25519 cert
|
|
fi
|
|
|
|
#{ echo '[Unit]';
|
|
# echo 'Description=Epicyon Desktop Notifications';
|
|
# echo '';
|
|
# echo '[Service]';
|
|
# echo "WorkingDirectory=${HOME}/.epicyon";
|
|
# echo "ExecStart=/usr/bin/python3 epicyon.py --noKeyPress --notifyType $notificationType --notify $HANDLE --password \"$PASSWORD\"";
|
|
# echo 'Type=oneshot';
|
|
# echo 'RemainAfterExit=yes';
|
|
# echo '';
|
|
# echo '[Install]';
|
|
# echo 'WantedBy=default.target'; } > "${HOME}/.config/systemd/user/epicyon-notifications.service"
|
|
#systemctl --user daemon-reload
|
|
#systemctl --user stop epicyon-notifications.service &
|
|
#systemctl --user disable epicyon-notifications.service
|
|
|
|
{ echo '#!/bin/bash';
|
|
echo 'cd ~/.epicyon';
|
|
echo "if [ \"\$1\" ]; then";
|
|
echo " PASSWORD=\"\$1\"";
|
|
echo 'else';
|
|
echo " PASSWORD=\$(zenity --width=400 --password --title \"Epicyon Desktop Client\")";
|
|
echo " if [ ! \"\$PASSWORD\" ]; then";
|
|
echo " zenity --warning --width=400 --text \"No password was given\"";
|
|
echo ' exit 3';
|
|
echo ' fi';
|
|
echo 'fi';
|
|
echo "python3 epicyon.py --desktop ${HANDLE} --password \"\$PASSWORD\""; } > ~/epicyon-client
|
|
chmod +x ~/epicyon-client
|
|
|
|
# TTS version
|
|
cp ~/epicyon-client ~/epicyon-client-tts
|
|
chmod +x ~/epicyon-client-tts
|
|
sed -i 's|epicyon.py|epicyon.py --screenreader espeak|g' ~/epicyon-client-tts
|
|
|
|
# TTS version
|
|
cp ~/epicyon-client ~/epicyon-client-pico
|
|
chmod +x ~/epicyon-client-pico
|
|
sed -i 's|epicyon.py|epicyon.py --screenreader picospeaker|g' ~/epicyon-client-pico
|
|
|
|
zenity --info --width=400 --text "Epicyon desktop client is now installed. You can run it with ~/epicyon-client"
|