diff --git a/i4lock.sh b/i4lock.sh new file mode 100644 index 0000000..845ffff --- /dev/null +++ b/i4lock.sh @@ -0,0 +1,319 @@ +#!/bin/bash + +path=~/.i4lock/config.yml + +ImageType="" +BlurType="" +FilePath="" + +isConfigExist() { + cat $path 2>/dev/null + echo $? +} + +############################# +# +# Fonction to write config +# +setConfig() { + echo "Image: $1" > $path + echo "Blur: $2" >> $path + echo "Sound: $3" >> $path + echo "PowerBtn: $4" >> $path +} + + +############################# +# +# Fonction to config Image +# +selectImage() { + title="Type Image" + prompt="Selectionner ci-dessous:" + options=("ScreenShot" "Fichier Existant" "Couleur") + PS3="$prompt " + + while opt=$(zenity --title="$title" --text="$prompt" --list \ + --width=480 --height=480 --column="Options" "${options[@]}" 2>/dev/null) + do + case "$opt" in + "${options[0]}") echo $opt; break;; + "${options[1]}") echo $opt; break;; + "${options[2]}") echo $opt; break;; + *) zenity --error --text="Option Invalide. Veuillez réessayer." 2>/dev/null;; + + esac + done +} + +############################# +# +# Fonction to config RGB Image +# +selectRGB() { + title="Couleur" + ask="Inserer votre couleur:  [Hex dans #]" + + echo `zenity --entry --title $title --text $ask "ff0000" "00ff00" "0000ff" 2>/dev/null` +} + +############################# +# +# Fonction to config blur +# +selectBlurType() { + title="Pourcentage de blur" + prompt="Selectionner ci-dessous:" + options=("0x0" "0x2" "0x4" "0x8" "0x16" "0x32" "0x64") + + PS3="$prompt " + + while opt=$(zenity --title="$title" --text="$prompt" --list \ + --width=480 --height=480 --column="Options" "${options[@]}" 2>/dev/null) + do + case "$opt" in + "${options[0]}") echo $opt; break;; + "${options[1]}") echo $opt; break;; + "${options[2]}") echo $opt; break;; + "${options[3]}") echo $opt; break;; + "${options[4]}") echo $opt; break;; + "${options[5]}") echo $opt; break;; + "${options[6]}") echo $opt; break;; + *) zenity --error --text="Option Invalide. Veuillez réessayer." 2>/dev/null;; + + esac + done + +} + +############################# +# +# Fonctions to config Sound +# +selectSoundBoolean() { + title="Son à l'activage" + prompt="Selectionner ci-dessous:" + options=("Oui" "Non") + + PS3="$prompt " + + while opt=$(zenity --title="$title" --text="$prompt" --list \ + --width=480 --height=480 --column="Options" "${options[@]}" 2>/dev/null) + do + case "$opt" in + "${options[0]}") echo $opt; break;; + "${options[1]}") echo $opt; break;; + *) zenity --error --text="Option Invalide. Veuillez réessayer." 2>/dev/null;; + + esac + done +} + +selectSoundType() { + echo `zenity --file-selection 2>/dev/null` +} + +############################# +# +# Fonction to config power button +# +selectPowerBoolean() { + title="Désactivage du Power Button" + prompt="Selectionner ci-dessous:" + options=("Oui" "Non") + + PS3="$prompt " + + while opt=$(zenity --title="$title" --text="$prompt" --list \ + --width=480 --height=480 --column="Options" "${options[@]}" 2>/dev/null) + do + case "$opt" in + "${options[0]}") echo $opt; break;; + "${options[1]}") echo $opt; break;; + *) zenity --error --text="Option Invalide. Veuillez réessayer." 2>/dev/null;; + + esac + done +} + +############################# +# +# Fonction to select a file +# +selectFile() { + echo `zenity --file-selection 2>/dev/null` +} + + +############################# +# +# Fonction to setup config +# of i4lock. +# +setupNewUser() { + echo "Bienvenue sur i4lock," + echo "Veuillez suivre les instructions afin de setup votre environnement." + + TypeLock="" + ImageType="" + BlurType="" + SoundType="" + SoundBoolean="" + PowerButton="" + + echo "Etape 1/5" + echo "| Selection Type" + + ImageType="$(selectImage)" + if [[ $ImageType == "" ]]; then + exit 1 + fi + + if [[ $ImageType == "Fichier Existant" ]]; then + ImageType="$(selectFile)" + TypeLock="File" + if [[ $ImageType == "" ]]; then + exit 1 + fi + elif [[ $ImageType == "Couleur" ]]; then + ImageType="$(selectRGB)" + TypeLock="RGB" + fi + + echo "Etape 2/5" + echo "| Selection Blur" + + if [[ $TypeLock != "RGB" ]]; then + BlurType="$(selectBlurType)" + else + BlurType="0x0" + fi + if [[ $BlurType == "" ]]; then + exit 1 + fi + #echo $BlurType + + echo "Etape 2/5" + echo "| Selection Sound" + + SoundBoolean="$(selectSoundBoolean)" + SoundType="null" + if [[ $SoundBoolean == "Oui" ]]; then + echo "Etape 3/5" + echo "| Selection Sound 2" + SoundType="$(selectSoundType)" + fi + echo "Etape 4/5" + echo "| Selection Power Button" + PowerButton="$(selectPowerBoolean)" + + echo "Etape 5/5" + echo "| Save Config" + + mkdir ~/.i4lock 2>/dev/null + echo 'alias i4lock="~/../machirat1/public/i4lock.sh"' >> ~/.bashrc + setConfig $ImageType $BlurType $SoundType $PowerButton +} + + +rmtempfile() { + rm /tmp/lock2.png 2>/dev/null + rm /tmp/lock.png 2>/dev/null +} + + +############## +# # +# Global # +# # +############## + +if [[ "$#" != "0" ]]; then + + ###################### + # + # Code of args + # + ###################### + + if [[ "$1" == "--help" ]]; then + echo "Utilisation : i4lock [OPTION]" + echo "Un i3lock custom à votre goût." + echo " " + echo "Options:" + echo "-c --config Permet de reconfigurer votre i4lock." + echo "-v --version Permet d'avoir la version de i4lock." + echo "-cl --clear Permet de clear sa config." + echo " " + echo "Dependencies:" + echo "- i3lock" + echo "- mpg123" + echo "- composite" + echo "- convert" + echo "- xinput" + + elif [[ "$1" == "-c" || "$1" == "--config" ]]; then + setupNewUser + elif [[ "$1" == "-v" || "$1" == "--version" ]]; then + echo "i4lock version 1.0" + elif [[ "$1" == "-cl" || "$1" == "--clear" ]]; then + read -p "Press any key to clear data or cancel with Ctrl+c" + rm $path + else + echo "i4lock: option invalide -- '$1'" + echo "Saisissez « i4lock --help » pour plus d'informations." + fi + +else + + ###################### + # + # Main of i4lock + # + ###################### + + configexist="$(isConfigExist)" + + if [[ $configexist == "1" ]]; then + setupNewUser + else + + rmtempfile + + Image=`cat $path | grep Image | cut -f 2 -d ' '` + ClrImg=`echo $Image | grep /home | wc -l` + Blur=`cat $path | grep Blur | cut -f 2 -d ' '` + Sound=`cat $path | grep Sound | cut -f 2 -d ' '` + PowerBtn=`cat $path | grep PowerBtn | cut -f 2 -d ' '` + getpower=`xinput --list | grep Power | cut -f 35 -d ' ' | sed 's/[^0-9]*//g'` + if [[ $Sound != "null" ]]; then + mpg123 $Sound + fi + if [[ $PowerBtn == "Oui" ]]; then + for i in $getpower; do + xinput disable $i; + done + fi + scrot /tmp/lock.png + if [[ "$Image" == "ScreenShot" ]]; then + if [[ $Blur != "0px" ]]; then + convert -blur $Blur /tmp/lock.png /tmp/lock.png + fi + i3lock -i /tmp/lock.png + elif [[ "$ClrImg" == "0" ]]; then + i3lock -c $Image + else + cp $Image /tmp/lock2.png + convert /tmp/lock2.png -resize 1920x1080 /tmp/lock2.png + composite -gravity center /tmp/lock2.png /tmp/lock.png /tmp/lock.png + if [[ "$Blur" != "0px" ]]; then + convert -blur $Blur /tmp/lock.png /tmp/lock.png + fi + i3lock -i /tmp/lock.png + fi + for i in $getpower; do + xinput enable $i; + done + rmtempfile + fi +fi \ No newline at end of file